2015-10-13 51 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

相关问题