从内容脚本访问页面功能

时间:2013-10-16 21:56:43

标签: javascript jquery ajax google-chrome google-chrome-extension

你好我正在制作一个chrome插件,它使用ajax自动刷新页面中的元素,在这个元素里面有很多拇指向上/向下按钮(每个注释中有两个),问题是当我刷新元素时这些按钮不再起作用,我曾经通过在刷新元素之后再次附加所需的javascript文件然后使用jquery的click()来修复它来修复它,下面的代码与greasemonkey工作正常:

greasemonkey脚本

[.....rest of code mainly image swaps and basic stuff which works nicely.....]
[...element refreshed...]
//REMAP
$('<script type="text/javascript" src="http://url.com/pageScript.js"/>').appendTo($('head'));

    //THUMBS UP
    $(".ico-thumbs-up").click(function() {
        unsafeWindow.voting(this, "up", 6);
        return false;
    });
    //THUMBS DOWN
    $(".ico-thumbs-down").click(function() {
        unsafeWindow.voting(this, "down", 7);
        return false;
    });
unsafeWindow.checkVotedPosts();
[.....rest of code mainly image swaps and basic stuff which works nicely.....]

contentScript.js

[.....rest of code mainly image swaps and basic stuff which works nicely.....]
[...element refreshed...]
//REMAP
$('<script type="text/javascript" src="' + chrome.extension.getURL('inject/pageScript.js') + '"/>').appendTo($('head'));

    //THUMBS UP
    $(".ico-thumbs-up").click(function() {
        voting(this, "up", 6);
        return false;
    });
    //THUMBS DOWN
    $(".ico-thumbs-down").click(function() {
        voting(this, "down", 7);
        return false;
    });
checkVotedPosts();
[.....rest of code mainly image swaps and basic stuff which works nicely.....]

pageScript.js

*voting(); function*

*checkVotedPosts(); function*

的manifest.json

{
      "matches": ["*://url.com/*"],
      "run_at": "document_start",
      "css": ["jquery/css/ui-lightness/jquery-ui-1.8.2.custom.css", "inject/css.css"],
      "js": ["jquery/ajax_jquery_1.7.1.min.js", "contentScript.js"]
}
"web_accessible_resources": [
    "inject/pageScript.js"
  ],

现在我使用的是基本相同的脚本,但在chrome扩展名unsafeWindow内部不再工作了,我搜索并在stackoverflow中发现了一些关于在页面中注入javascript的帖子,我尝试注入一个函数,它会调用在页面中投票()然后在我的脚本中调用那个函数但是没有真正成功。

(我还在等完DOMContentLoaded之前)

我是一般的编码新手,所以我很抱歉,如果它真的很简单,我就是在浪费你的时间。

0 个答案:

没有答案