2012-10-13 135 views
1

我有一個簡單的Chrome擴展,點擊一些URL後會打開新的Chrome標籤。 我使用的成功簡單的在線的JavaScript如何在Chrome擴展中打開新標籤(Manifest v2)

... 
<script type="text/javascript"> 
function LaunchURL(oURL) { 
var launchType = localStorage["LS_LaunchType"];   
    switch (launchType) { 
     case "TN": 
      chrome.tabs.create({ url: oURL }); 
      break; 
     case "WN": 
      chrome.windows.create({ url: oURL }); 
      break; 
     default: 
      chrome.tabs.create({ url: oURL }); 
      break; 
    } 
} 
</script> 
... 
<a href="javascript:LaunchURL('http://foo.com')">My hyperlink</a> 

我想升級的manifest.json 2版本,但現在在行腳本被阻止出於安全原因。 如何打開新標籤頁? 我試圖創建一個單獨的JavaScript文件與以前的功能,但沒有成功。

+1

編輯:谷歌上搜索一些我已經找到了一個簡單的修復後: ** ** My hyperlink 工作正常。 – eang

回答

0

你有什麼應該在外部JavaScript文件中正常工作,但你需要從錨標記中刪除腳本。相反,只需在錨標記中添加url,並在javascript中添加一個事件偵聽器,以防止默認操作。

所以在你的頁面有:

<script src="external.js"></script> 
<a href="http://foo.com">My hyperlink</a> 

而且在external.js您有:

document.addEventListener("DOMContentLoaded", function() { 

    var anchors = document.querySelectorAll("a"); 
    for (var i = 0; i < anchors.length; i++) { 
     anchors[i].addEventListener("click", function(event) { 
      LaunchURL(event.currentTarget.href); 
      event.preventDefault(); 
     }); 
    } 

    function LaunchURL(oURL) { 
     var launchType = localStorage["LS_LaunchType"];   
      switch (launchType) { 
       case "TN": 
        chrome.tabs.create({ url: oURL }); 
        break; 
       case "WN": 
        chrome.windows.create({ url: oURL }); 
        break; 
       default: 
        chrome.tabs.create({ url: oURL }); 
        break; 
      } 
     } 
}); 
+0

謝謝。但仍然沒有工作。 Chrome-Developer-Console顯示「Uncaught ReferenceError:anchor is not defined」,參考第23行[** LaunchURL(anchor.href); **] – eang

+0

我已經編輯了答案,所以現在試試'event.currentTarget .href「而不是'anchor.href',它應該從click事件中讀取它。 – slashnick

相關問題