我正在使用Chrome扩展程序的内容脚本以编程方式注入另一个可以访问网页变量和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
,它在网页上执行操作。在我的注入内容脚本中,我正在等待onYouTubePlayerReady
事件
function onYouTubePlayerReady(playerId) {
foo(); // <-- function not defined, error does not show in console
}
foo(); // <-- error shows in console
如果由于例如在上述情况下调用不存在的函数(例如foo()
)而导致运行时错误,则在从该函数内部调用时,我在控制台上看不到此错误。
那么:如何在编程时捕获此JavaScript中生成的错误?我假设这是因为该功能是从YouTube JavaScript调用的......?
答案 0 :(得分:1)
如果错误称为运行时错误,那么,当代码运行时发生 。
您的脚本只是声明 onYouTubePlayerReady
但实际上并没有运行它(以后它应该由别人运行)。因此,您无法看到运行时错误:不是任何错误。爱好。
相反,语法错误是分析时错误。因此,无论如何,你都会看到它们。
请注意,在您的特定情况下,您没有看到错误的事实可能意味着YouTube API已经尝试过调用该函数,或者从未尝试过。您可能希望将run_at
内容脚本参数设置为&#34; document_start&#34;排除第一种可能性。
如果您确定代码已执行,可能会使页面(或YT API)具有全局异常处理程序,从而使运行时错误无效。在这种情况下,您可以尝试在代码中包含try...catch
,以便在异常冒出之前捕获并记录异常。