我想構建一個Chrome擴展,它使用注入的JS從我的服務器將HTML插入到我的服務器的Facebook頁面中。然後,我希望能夠從HTML中調用Javascript函數,並在Facebook頁面上執行它。問題是,當我從HTML文件調用它時,我放入fhrun.js文件的JS函數不會在頁面上運行。這可能與事實沒有任何注入JS的功能可以從Facebook上的JS控制檯執行。從Chrome擴展中運行注入的JS函數AJAX加載頁面
這裏是Chrome劇本我在background.js文件中運行:
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
這是阿賈克斯。 HTML:
<a href="#" onclick="testFunction();">Click Me</a> //link doesn't work
當我點擊「點擊我」,它應該調用testFunction();
這是具有成爲JS裏面en注入頁面。但事實並非如此。它甚至不會拋出錯誤。我也嘗試將testFunction();
放入background.js文件中,這也不起作用。
有什麼建議嗎?
allFrames和runAt應該是all_frames和run_at。您的問題描述不夠清晰,您是否可以創建並共享最小的演示來顯示您的問題(包括'manifest.json')?你知道執行上下文的區別嗎(參見[這個答案])(http://stackoverflow.com/questions/9915311/chrome-extension-code-vs-content-scripts-vs-injected-scripts/9916089#9916089 ))? –