jquery的.ready函数是不可预测的

时间:2016-01-07 12:01:34

标签: javascript jquery google-chrome-extension

我正在撰写Chrome扩展程序。我正在尝试让我的脚本打开一个新选项卡并在搜索中输入文本,但我似乎遇到了同步问题。这是我的代码:

的helloworld.html

<html>
  <h1 id="test"></h1>

  <head>

  <script src="navigate.js"></script>

  </head>
</html>

的manifest.json

{
  "name": "Sonic",
  "version": "0.1",
  "manifest_version": 2,
  "description": "My first Chrome extension.",
  "permissions": [ "tabs" ],

  "browser_action": {
    "default_icon": "Sonic_Sprite.png",
    "default_popup": "helloworld.html"
  },

  "content_scripts": [
    {
      "matches": ["http://stackoverflow.com/questions/*/*"],
      "js": ["jquery-1.11.3.js", "content.js"]
    }
  ]
}

content.js

var raw_title = document.getElementsByClassName("question-hyperlink")[0];

var kickass = window.open("https://kickass.unblocked.pe/");

$(kickass.document).ready( function() {
    kickass.alert("hello");
    var s = kickass.document.getElementById("contentSearch");
    alert(s);
});

我从jquery的ready()函数中获得了不可预知的行为。也许20%的时间我加载页面它会给我一个提醒。

这是一个常见错误,如果是这样,可以采取哪些措施来解决它?在继续使用jquery之前,我使用了onload,并且在触发警报方面产生了更糟糕的结果。

1 个答案:

答案 0 :(得分:0)

我不知道这是解决方案,但这应该有效

var raw_title = document.getElementsByClassName("question-hyperlink")[0];

var kickass = window.open("https://kickass.unblocked.pe/");
var firstload= "false";
localStorage.setItem("someVarName", someVarName)
$(kickass.document).ready( function() {
var someVarName = localStorage.getItem("someVarName");
if(someVarName=="false")
{
    kickass.alert("hello");
    var s = kickass.document.getElementById("contentSearch");
    alert(s);
}
else
{
//page is not loading first time do the stuff you want to
}
});

Read Localstorage here

如果要从localstorage中删除它,只需像这样调用

var someVarName = localStorage.removeItem(getItem("someVarName"))