2012-07-26 73 views
3

我正在为Facebook创建一个Chrome扩展程序。 我需要在每个页面上执行相同的内容脚本。它在第一次加载过程中运行良好,但当我通过链接(作为配置文件名称)进入Facebook页面时,它不起作用。 我读过这是因为除第一次以外并没有加载整个页面。所以脚本不会再执行。 但是我不知道如何解决这个问题。Chrome扩展程序:在Facebook上的内容脚本

这里是我的manifest.json:

{ 
    "name" : "name", 
    "version" : "1.0", 
    "manifest_version":1, 
    "description" : " description ", 
    "content_scripts" : [ 
      { 
       "matches" : ["http://www.facebook.com/*"], 
       "js" : ["test.js"] 
      } 
    ] , 
    "all_frames":"true" 
} 

我希望有人将有答案,因为我真正需要的脚本(test.js,不更改HTML或CSS)来执行每一次在每一页上!

感谢您的未来答案。

+0

Facebook严重依赖于AJAX,iirc。页面本身没有重新加载,但内容被替换。由于问题是Facebook特定的,请查看http://facebook.stackoverlow.com/ – 2012-07-26 15:16:15

+0

[Chrome扩展应该在所有Facebook页面上运行的可能的重复只在刷新时运行](http:// stackoverflow.com/questions/9982429/chrome-extension-which-is-supposed-to-run-on-all-facebook-pages-only-runs-when-i) – 2012-07-26 15:18:02

+0

你可以尝试为hashchange事件实现一个处理程序在您的脚本中,并让它在运动发生后再次运行... – CBroe 2012-07-26 16:11:41

回答

2

我个人通过使用Chrome的webRequest API解决了这个问题。您需要添加一个跟踪AJAX生成的HTTP调用的侦听器。这里主要是我用的代码:

chrome.webRequest.onCompleted.addListener(function(details) { 
    var url = document.createElement('a'); 
    url.href = details.url; 
    if (url.search && url.search.indexOf('ajaxpipe=1') !== -1) { 
     console.log('New page via AJAX.'); 
     chrome.tabs.executeScript({'file' : 'test.js'}); 
    } 
}, {urls : ["*://*.facebook.com/*"]}); 
相关问题