我的chrome扩展程序文件夹中有一个iframe.html页面。我想在我当前的网页上显示它。这就是问题,当我点击iframe中的按钮时,如何关闭iframe?我试过像这样的代码:
window.parent.iframe.hide()
但它不适用于错误:
Unsafe JavaScript attempt to access frame with URL
但我清楚地阅读了evernote的源文件。它有一些代码,如
window.parent.$readable.hide()
为什么evernote的扩展有效,但我的扩展显示有些错误?这是我在manifest.json中做的事吗?这是我的清单文件。
{
"name": "Reader",
"version": "1.0",
"manifest_version": 2,
"description": "A great start!",
"browser_action": {
"default_icon": "icon.png"
},
"background": {"scripts": ["background.js"]},
"permissions": [
"tabs", "<all_urls>"
],
"web_accessible_resources": [
"iframe/index.html"
]
}
答案 0 :(得分:0)
我没有密切关注Evernote,但是有一种可能性:也许Evernote为它正在添加的<iframe>
指定了其他权限属性。看一下MDN对sandbox
attribute的描述:
属性的值可以是以空格分隔的标记列表,这些标记可以解除特定限制。有效的令牌是:
allow-same-origin
:允许将内容视为与包含文档的来源相同。如果未使用此关键字,则嵌入的内容将被视为来自唯一来源。...
allow-scripts
:允许嵌入式浏览上下文运行脚本(但不创建弹出窗口)。如果未使用此关键字,则不允许执行此操作。
因此,当您的内容脚本将iframe添加到页面时,请添加一个sandbox
属性来减少原点和/或脚本限制。
<iframe src="chrome-extension://abcdefghijk/iframe/index.html" sandbox="allow-same-origin">
尝试添加不同的sandbox
权限,看看是否可以修复它。我相信allow-same-origin
和/或allow-scripts
会解决问题。