2014-08-27 184 views
0

我想創建一個上下文菜單項,以基於選定文本在新標籤上啓動新頁面,然後使用JavaScript代碼修改新標籤頁的DOM元素。我manifest.json文件是:Chrome瀏覽器擴展程序:Javascript注入到活動標籤

{ 
    "name": "ContextBox", 
    "description": "An experimental context menu addition", 
    "version": "0.5", 

    "permissions": [ 
       "contextMenus" 
       ], 

    "background": { 
     "scripts": ["background.js"] 
    }, 
    "manifest_version": 2 
} 

我的代碼background.js:

. 
    . 
    //this is part of handler for context menu item event onClick 
    window.open('https://www.google.com', '_blank'); 
    setTimeout(prxAsync, 1000); 
} 


function prxAsync(){ 
    chrome.tabs.getSelected(null, function(tab) { 
     chrome.tabs.executeScript(null,{code:"alert('hello');"}); 
    }); 
    return; 
} 

這是行不通的。 executeScript不起作用,但不會顯示任何錯誤(使用try-catch)。

回答

0

而不是在window.open混合,你可以保持在Chrome API的範圍內。

chrome.tabs.create({url: 'https://www.google.com'}, function(tab){ 
    chrome.tabs.executeScript(tab.id, {code:"alert('hello');"}); 
}); 

沒有超時,沒有環島標籤搜索。

也就是說,您需要主機權限爲programmatic injection。當你創建一個新標籤頁時,"activeTab"不會幫助你。

"permissions": [ 
    "contextMenus", "https://www.google.com/*" 
], 

您可以使用一攬子許可,像"<all_urls>",但如果你有保存預設的頁數要打開,最好明確的列出它們。

+0

請注意,'executeScript'調用也可能需要''tabs「'權限,但這並不確定。 – Xan 2014-08-27 12:10:00

+0

謝謝。它完全工作..我有權限問題,順便說一句。 – 2014-08-27 15:08:01

相關問題