2015-10-13 50 views

回答

2

我認爲最簡單的方法是使用可選的回調executeScript。使用'success';自行結束您的內容腳本。那麼你的注射電話會是:

chrome.tabs.executeScript(tabId, details, successStatus); 
function successStatus(frameResults) { 
    if (frameResults[0] === 'success') { 
    // successfully injected 
    } 
} 
+0

你是什麼意思? 。 –

+0

'frameResults'是一個數組,其中每個數組元素是框架中內容腳本中最後一個評估過的表達式。所以你希望你的內容腳本以一個表示成功加載的表達式結束。在這種情況下,你可以簡單地寫成「'成功';'在自己的路線上。 Chrome會評估該表達式,這將成爲結果數組中的條目。 – Teepeemm

+0

我加了就像你說的..但是接收空 –

0

好吧,說我們正在談論的實際頁面,而不是背景延伸。

首先,你必須在頁面中包含的scrits,這裏是即時通訊做這個

var j = document.createElement('script'); 
j.src = chrome.extension.getURL('bower_components/jquery/dist/jquery.min.js'); 
(document.head || document.documentElement).appendChild(j); 

var k = document.createElement('script'); 
k.src = chrome.extension.getURL('bower_components/jquery-ui/jquery-ui.min.js'); 
(document.head || document.documentElement).appendChild(k); 

再怎麼檢查它是否被加載我有一個if條件

if((/in/.test(document.readyState)) || (undefined === Backbone)) { 
    setTimeout('refresh(' + f + ')', 10); 
    } else { 
    f(); 
    console.log("Loaded Main Application"); 

所以我詢問狀態是否準備就緒,然後檢查瀏覽器是否加載了我的js。

希望它可以幫助

+0

OP在後臺/活動頁面中使用executeScript,因此他的注入方式與您不同。 (並且不要使用'setTimeout'的eval形式,在這種情況下,你應該使用'refresh.bind(undefined,f)'。) – Teepeemm

+0

謝謝你,生病了嗎 – jstuartmilne

相關問題