2012-07-26 117 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/*"]}); 
相關問題