从Chrome扩展AJAX加载页面运行注入的JS函数

时间:2012-11-15 16:51:05

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

我正在尝试构建一个Chrome扩展程序,它使用注入的JS将HTML从我的服务器插入到我的服务器的Facebook页面中。然后,我希望能够从HTML中调用Javascript函数,并让它在Facebook页面上执行。问题是,当我从HTML文件中调用它时,我放在fhrun.js文件中的JS函数不会在页面上运行。它可能与以下事实有关:所有注入的JS函数都不能从Facebook上的JS控制台执行。

以下是我在background.js文件中运行的Chrome脚本:

chrome.tabs.executeScript(null,
    {file: "fhrun.js", allFrames: false, runAt: "document_start"},
    function(){
        //JS inserted
    }
);

这是一个简化的fhrun.js(它还包含jquery):

function testFunction(){
console.log("Test function is working.");
}

$("#facebookDiv").load("https://path.to.my.server/ajax.html"); // this works great btw

这是ajax.html:

<a href="#" onclick="testFunction();">Click Me</a> //link doesn't work

当我点击“Click Me”时,它应该调用已注入页面的JS内部的testFunction();。但事实并非如此。它甚至没有抛出错误。我也尝试将testFunction();放在background.js文件中,但这也不起作用。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

内联Java脚本不适用于JS注入,而是使用事件绑定

例如:

onload = function(){

document.getElementById(“xx”)。click = fun;

};