javascript:为什么我的代码可以在Chrome控制台中运行,但不能在脚本文件中运行?

时间:2016-05-18 19:19:38

标签: javascript jquery google-chrome-extension

我有一个很有效的.js文件。除了带选择器的行及其后续控制台日志不返回任何内容。我在控制台中尝试了代码并且它可以工作:控制台日志返回我期望的内容。那么问题是,为什么它在脚本文件中不起作用?为了解决这个问题,我已经注释掉了脚本中的每一行。它仍然无法正常工作。这些仅仅4行可能有什么问题? - 现在它们都在脚本文件中。

 $( document ).ready(function() {
    alert("alert");
    var fullname2 = $('#topcard').find('.profile-info').find('h1').text().replace(/ /g, '_');

   console.log(fullname2);
});

如果我在控制台中运行代码,或者运行.js脚本,则会触发警报。

以上是content.js中的代码,该代码是Chrome扩展程序的一部分。所以我确认错误是在文档准备好之前运行.js文件的相关内容,如下所示:如果我使用setTimeout,则错误似乎从运行js中消失。脚本:

setTimeout(function(){
console.log("hello");

$(document).ready(function() {

    var fullname2 = $('#topcard').find('.profile-info').find('h1').text();
 console.log(fullname2);
});

}, 2000);

通过运行脚本,控制台可以正确记录完整名称。

我发现在manifest.json中设置“run_at”可能会有所不同。但到目前为止我还没有成功。由于默认为“document_idle”,并且当我没有指定run_at时它不起作用,现在我将其设置为“run_at”:“document_end”。但是如果没有setTimeout,它仍然无效。

0 个答案:

没有答案