gpt4 book ai didi

javascript - 如何捕获从 Chrome 扩展程序以编程方式注入(inject)的 JavaScript 中的错误?

转载 作者:行者123 更新时间:2023-12-03 05:44:59 26 4
gpt4 key购买 nike

我正在使用 Chrome 扩展程序的内容脚本以编程方式注入(inject)另一个可以访问网页变量和 DOM 的内容脚本。我在 YouTube 上执行此操作是为了等待 onYouTubePlayerReady事件。

所以,我有文件 content_script.js ,其中包含:

var s = document.createElement('script');
s.src = chrome.extension.getURL('src/js/content_script_inject.js');
(document.head||document.documentElement).appendChild(s);
s.onload = function() {
s.parentNode.removeChild(s);
};

文件 content_script_inject.js ,它在网页本身上执行操作。在我注入(inject)的内容脚本中,我正在等待 onYouTubePlayerReady事件

function onYouTubePlayerReady(playerId) {
foo(); // <-- function not defined, error does not show in console
}
foo(); // <-- error shows in console

如果运行时错误是由调用不存在的函数(例如foo())引起的在上面的情况下,当从该函数内部调用它时,我在控制台上没有看到此错误。

那么:在编程时如何捕获 JavaScript 中生成的错误?我假设这是因为该函数是从 YouTube JavaScript 调用的......?

最佳答案

如果代码运行时发生错误,则该错误称为运行时错误。

您的脚本仅声明 onYouTubePlayerReady 但实际上并未运行它(它应该稍后由其他程序运行)。因此,您看不到运行时错误:没有任何错误。然而。

相比之下,语法错误是解析时错误。因此,无论如何您都会看到它们。

<小时/>

请注意,在您的特定情况下,您没有看到错误可能意味着 YouTube API 已经尝试调用该函数,或者从未真正尝试过。您可能需要将 run_at 内容脚本参数设置为“document_start”以排除第一种可能性。

如果您确定代码已执行,该页面(或 YouTube API)可能有一个全局异常处理程序,可以消除运行时错误。在这种情况下,您可以尝试在代码中包含 try...catch 以在异常冒泡之前捕获并记录异常。

关于javascript - 如何捕获从 Chrome 扩展程序以编程方式注入(inject)的 JavaScript 中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40365053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com