chrome.tabs.executeScript在chrome.tabs.create回调中不起作用

时间:2014-01-21 16:10:59

标签: javascript google-chrome browser google-chrome-extension

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”。我做错了什么?

1 个答案:

答案 0 :(得分:4)

您无法在about:blankbug 55084bug 76429)上运行任何内容脚本。

如果您想在新标签中显示信息,请使用data: - 网址,

chrome.tabs.create({
    url: "data:text/html,<script>" + 
         "window.setTimeout(function() {document.write(\"123\")},5000);" +
         "</script>"
});

或Chrome扩展程序中的页面(注意:chrome.tabs.executeScript不能用于在chrome-extension: - 网址上运行内容脚本):

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

view.htmlCSP约束,因此如果您想使用脚本,则必须将其放在单独的文件中:

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