2012-02-13 69 views
0

我目前正在开发一个网络加载项,它根据您当前所在的网站执行某些操作。当我从网址栏(例如yahoo.com)进入网页时,加载项工作正常,但是当我尝试使其它页面上的JavaScript运行时,它无法运行。我使用的代码是:在网址中访问更改

 if(document.URL.search("yahoo.com")>=0){ 
      var scriptYahoo = document.createElement('script'); 
      scriptYahoo.type='text/javascript'; 
      scriptYahoo.src='http://localhost:8001/yahooChrome.js'; 
      body.appendChild(scriptYahoo);   
     } 

我的印象是URL.search会显得整个URL,回来真,如果它发现它在URL下的任何地方。如果有人可以试着让我知道为什么这只适用于当你要去yahoo.com,而不是任何其他网站导航到yahoo.com内。

我缩小了一下,意识到它们所在的文件甚至在页面加载时都不会被调用。它确实被调用,但当我只是去一些随机的其他网页。

----- -----编辑

我为我的缺乏是怎么回事的完整知识的道歉,我接手另一个开发这个代码,我真的不知道到底是什么还在继续。我发现的是,如果这段代码只是简单地运行,它会在URL中返回每个带有yahoo.com的网站。尽管这在任何时候都不会被调用。我有这个功能在这里看到,如果一个选项卡已被修改,在所有:

chrome.tabs.onUpdated.addListener(check); 
//chrome.tabs.onClicked.addListener(test); 

function check(tab_id,data,tab){  

     console.log("updated"); 
     if (data.status == "complete") 
      { 
       chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) { 
       console.log(response.farewell); }); 
      } 
};  

如果我在这里它将始终击中无论是正装什么页面中的功能放警报的任何地方。当我得到了我的onRequest函数但如果它是yahoo.com

chrome.extension.onRequest.addListener(
      function(request, sender, sendResponse) { 
      console.log(sender.tab ?"from a content script:" + sender.tab.url :"from the extension"); 
      trackInfo(); 
      setTimeout("init();", 2000); //wait till the page got loaded 
      if (request.greeting == "hello") 
       sendResponse({farewell: "goodbye"}); 
      else 
       sendResponse({});    
      }); 

所以在这一点我不知道为什么它会停止追赶的功能内的所有变化的一些变化也没有命中。非常感谢您的帮助。

+0

它应该工作。你如何在所有文件中嵌入这个脚本? – caleb 2012-02-13 22:19:05

+0

最后一行应该是:'document.body.appendChild(scriptYahoo)' – Teemu 2012-02-13 22:28:51

+0

或者你可以试试indexOf,即if(document.URL.indexOf(“yahoo.com”)!= - 1) – 2012-02-13 22:45:11

回答

0

我想通了,我只是需要做的:

"matches": ["http://*/*","https://*/*"], 

代替:

"matches": ["http://*","https://*"], 

在我的清单文件,并将其固定我的所有问题。