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

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

最佳答案

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

如果您想在新选项卡中显示信息,请使用 data:-URL,

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

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

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);

关于javascript - chrome.tabs.executeScript 在 chrome.tabs.create 回调中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21263360/

相关文章:

javascript - 正则表达式过滤掉 Angular 中的 YouTube 视频

javascript - Angular .js : reference the current model by short variable name

javascript - 这个 JavaScript 破坏了控制台吗?

php - MySQL 和 PHP : Only the first field in the table is displayed

javascript - 重复的脚本标签会导致多次运行吗?

javascript - 从弹出窗口中选择图像并显示在主页中

html - Firefox 中 anchor 内的输入框中没有文本选择

html - Chrome/Safari 最近是否更改了 mix-blend-mode 的处理方式

.net - 在 WP7 中使用带有图像引用的 webBrowser.NavigatetoString()

c# - 使用 Graphics.GetHdc 时参数无效异常