2014-01-21 113 views
2
chrome.tabs.create({ 
    url: "about:blank" 
}, function (tab) { 
    chrome.tabs.executeScript(tab.id, { 
     code: "window.setTimeout(function() {document.write(\"123\")},5000);" 
    }) 
}); 

我正在寫一個簡單的chrome插件並希望打開一個僅包含「123」的新選項卡。我已經使用setTimeout來確保代碼在加載後運行,但「123」不會被寫入。我究竟做錯了什麼?chrome.tabs.executeScript在chrome.tabs.create中不起作用回調

+0

爲什麼你使用'document.write' ..?當一個文檔加載完成後,調用這個方法將用你在方法調用中放入的任何東西替換當前文檔,在你的情況下是「123」。 –

+0

這是一個基於about:blank的空白文檔。我只想在新標籤中顯示一些信息。在Chrome控制檯中,Document.write()完美適用於about:blank。 – Aich

回答

4

您不能在about:blankbug 55084bug 76429)上運行任何內容腳本。

如果你想你的瀏覽器擴展程序中顯示在新標籤中的信息,無論是使用data: -URL,

​​

或頁面(注:chrome.tabs.executeScript不能被用來在chrome-extension:運行內容的腳本-URLs其一):

chrome.tabs.create({ 
    // TODO: Create a file called view.html that renders the result 
    url: chrome.runtime.getURL("view.html") 
}); 

view.html是受CSP,所以如果你想使用腳本,必須將其放在一個單獨的文件:

<!-- view.html --> 
<script src="view.js"></script> 
// view.js 
window.setTimeout(function() {document.write("123")},5000); 
+0

非常感謝,謝謝!我寧願使用數據:因爲顯示內容將在運行時決定。 – Aich

+1

@Aich您還可以將字符串作爲查詢字符串或位置片段傳遞給擴展頁面,即'chrome.runtime.getURL(「view.html」)+'?123''和'view.js','文檔.WRITE(location.search.slice(1));' –