Javascript 为什么document.open()在FireFox扩展中会失败?

Javascript 为什么document.open()在FireFox扩展中会失败?,javascript,firefox,firefox-addon,Javascript,Firefox,Firefox Addon,如果我在内容脚本(content.js)中有以下代码: 使用最小manifest.json { "name": "__MSG_appName__", "version": "1.0.0", "description": "__MSG_appDesc__", "default_locale": "en", "permissions": ["<all_urls>", "tabs", "storage"], "content_scripts": [{ "js

如果我在内容脚本(content.js)中有以下代码:

使用最小manifest.json

{
  "name": "__MSG_appName__",
  "version": "1.0.0",
  "description": "__MSG_appDesc__",
  "default_locale": "en",
  "permissions": ["<all_urls>", "tabs", "storage"],
  "content_scripts": [{
    "js": ["content.js"],
  }],
  "manifest_version": 2
}
{
“名称”:“\uuuu MSG\u appName\uuuuuuu”,
“版本”:“1.0.0”,
“说明”:“\uuuu MSG\u appDesc\uuuuuu”,
“默认语言环境”:“en”,
“权限”:[“”、“选项卡”、“存储”],
“内容脚本”:[{
“js”:[“content.js”],
}],
“清单版本”:2
}
浏览器应该只显示“test”,但这只适用于Chrome。完全相同的代码在FireFox中不起作用,没有控制台错误,如果我在上述代码之后添加
console.log()
,它将永远不会触发

如果我将完全相同的代码粘贴到FireFox(或Chrome)上的控制台中,它会按预期工作,但在内容脚本中无法工作

我还尝试更改了
window.top.document
和类似的
文档
,并输出了
文档
对象,以确保我不会发疯(它是有效的),因此我不确定是否遗漏了一些明显的内容


更新:我还发现,如果运行
document.write()以获得一个空白页,然后在
关于:调试
中重新加载插件,然后插件再次运行并工作-但前提是我首先从控制台手动运行
打开
写入

我不知道为什么会工作,但如果其他人遇到此特定问题,调用以下命令不起作用(无声地失败,并且没有进一步执行)

鉴于此方法效果良好:

window.eval('document.write()');
document.write('test')

我不知道为什么会这样,但是如果其他人遇到这个特定问题,调用下面的命令是不起作用的(无声地失败,并且没有进一步的执行)

鉴于此方法效果良好:

window.eval('document.write()');
document.write('test')

请选择要讨论的问题:包括重复问题的问题。对于Chrome扩展或Firefox WebExtensions,您几乎总是需要包含manifest.json和一些背景、内容和/或弹出脚本/HTML,通常还有网页HTML/scripts。寻求调试帮助的问题(“为什么我的代码没有按我想要的方式工作?”)必须包括:(1)所需的行为,(2)特定的问题或错误,(3)在问题本身中重现它所需的最短代码。另请参见:、和。@Makyen我已经做了一些编辑并添加了一个最小清单,但问题本身相当完整-为什么document.open/write/close在FF内容脚本中不起作用(没有错误),但在Chrome中起作用?请将问题放在主题上:包含一个复制问题的。对于Chrome扩展或Firefox WebExtensions,您几乎总是需要包含manifest.json和一些背景、内容和/或弹出脚本/HTML,通常还有网页HTML/scripts。寻求调试帮助的问题(“为什么我的代码没有按我想要的方式工作?”)必须包括:(1)所需的行为,(2)特定的问题或错误,(3)在问题本身中重现它所需的最短代码。另请参见:、和。@Makyen我做了一些编辑并添加了一个最小清单,但问题本身相当完整-为什么document.open/write/close在FF内容脚本中不起作用(没有错误),但在Chrome中却起作用?
window.eval('document.write()');
document.write('test')