ais*_*siy 5 javascript iframe google-chrome cross-domain google-chrome-extension
我的 chrome 扩展文件夹中有一个页面 iframe.html。我希望它显示在我当前的网页中。问题来了,当我单击 iframe 中的按钮时,如何关闭 iframe?我试过这样的代码:
window.parent.iframe.hide()
Run Code Online (Sandbox Code Playgroud)
但它不适用于错误:
Unsafe JavaScript attempt to access frame with URL
Run Code Online (Sandbox Code Playgroud)
但是我清楚地阅读了evernote的源文件。它有一些代码,如
window.parent.$readable.hide()
Run Code Online (Sandbox Code Playgroud)
为什么 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"
]
}
Run Code Online (Sandbox Code Playgroud)
我没有仔细研究过 Evernote,但有一种可能性:也许 Evernote 正在为其<iframe>
添加的内容指定其他权限属性。看看MDN对该sandbox
属性的描述:
该属性的值可以是解除特定限制的以空格分隔的标记列表。有效的令牌是:
allow-same-origin
:允许将内容视为与包含的文档来自同一来源。如果不使用此关键字,嵌入的内容将被视为来自唯一的来源。...
allow-scripts
:允许嵌入式浏览上下文运行脚本(但不创建弹出窗口)。如果不使用该关键字,则不允许该操作。
因此,当您的内容脚本将 iframe 添加到页面时,请让它添加一个sandbox
属性来解除来源和/或脚本限制。
<iframe src="chrome-extension://abcdefghijk/iframe/index.html" sandbox="allow-same-origin">
Run Code Online (Sandbox Code Playgroud)
尝试添加不同的sandbox
权限,看看是否可以解决问题。我相当有信心allow-same-origin
和/或allow-scripts
将会解决这个问题。
归档时间: |
|
查看次数: |
3684 次 |
最近记录: |