2011-04-12 55 views
1

我想通過單擊瀏覽器動作按鈕創建一個選項卡,然後插入一個內容腳本或執行腳本。到目前爲止,它運行得不好。如何通過browserAction創建一個新選項卡然後執行腳本

Background.html

chrome.browserAction.onClicked.addListener(function(tab) 
{ 
    chrome.tabs.create({url: "Dreamer.html"}, function(tab) //Dreamer.html is a file in my extension 
    { 
     //Add a script 
     chrome.tabs.executeScript(tab.id, {file:'Dreamer.js'}); 
    }); 
}); 

的manifest.json

{ 
    "name" : " Dreamer", 
    "version" : "0.1", 
    "description" : "My extensionr", 
    "browser_action" : {"default_icon" : "App/AppData/Images/icon.png", "default_title":"Start Dreamer" }, 
    "background_page" : "App/AppData/background.html", 
    "content_scripts" :[{"matches":["http://*/*"],"js":["app/view/UIManager.js"]}], 
    "permissions": [ "cookies", "tabs", "http://*/*", "https://*/*" ] 
} 

我得到這個錯誤在後臺頁面

Error during tabs.executeScript: Cannot access contents of url "chrome-extension://femiindgnlfpdpajimkmldpgpccngfmd/Dreamer.html". Extension manifest must request permission to access this host. 

我真的想知道如何創建一個標籤(新標籤)並立即運行腳本

編輯:

的一種應用,我創建的,需要採取以下行動:

- 允許用戶通過點擊新標籤的browserAction按鈕
-On創建創建新的標籤,文件在我的分機(Dreamer.html)打開
- 添加內容腳本或在新標籤執行腳本

感謝

回答

0

是有什麼特別的原因需要注入腳本?由於Dreamer.html和Dreamer.js似乎都是硬編碼的,因此您可以在前者包含<script type="text/javascript" src="Dreamer.js"></script>,對不對?

作爲一個好處,如果您需要它將信息發送到後臺頁面,您可以直接使用chrome.extension.getBackgroundPage()來訪問它,而不是設置通常伴隨內容腳本的複雜偵聽器。

注入內容腳本用於在擴展沙箱外注入腳本。然而,Dreamer.html是擴展的一部分。

編輯

如果你想如何在擴展頁面執行腳本的(笨拙的)例子,在這裏看到:

http://code.google.com/p/chromium/issues/detail?id=30756#c11

我不認爲它適用但是,你的情況。

+0

謝謝。你太棒了。 – Kennedy 2011-05-31 14:14:15

相關問題