我现在正在Chrome
扩展,但我遇到了许可/安全问题。我有一个本地HTML
模板文件,我在某些网页上插入浮动iframe
。我从AJAX
/ cookies中检索到某些信息,我想将其插入到模板中。当我这样做时,我遇到了一个错误:
一些相关代码:
$(this).after('<div id=\"flowframe\"><iframe src=\"'+chrome.extension.getURL('hoverwindow.html')+'\"></iframe></div>');
$('iframe').contents().find('#description').html(data.description);
第二行抛出错误:
Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement'
Blocked a frame with origin "http://ugradcalendar.uwaterloo.ca" from accessing a frame with origin "chrome-extension://kdjcjbijngfephllebpnahpodnbcnhlo".
The frame requesting access has a protocol of "http", the frame being accessed has a protocol of "chrome-extension". Protocols must match.
我认为我的清单设置正确,但我不完全确定:
...
"web_accessible_resources": ["loading.gif", "hoverwindow.html"],
"content_scripts": [
{
"matches": ["http://ugradcalendar.uwaterloo.ca/*"],
"css": ["extension-styling.css"],
"js": ["jquery-1.11.3.js","js.cookie.js","script.js"],
"all_frames": true
}
],
"permissions": [
"activeTab",
"cookies",
"http://uwflow.com/",
"https://uwflow.com/",
"http://ugradcalendar.uwaterloo.ca/",
"https://ugradcalendar.uwaterloo.ca/"
]
答案 0 :(得分:1)
所以,几天后我发现了一个适合我的解决方案。我没有为iframe
取得任何成功。
由于我的模板是本地文件,因此我了解到我可以简单$.load()
将模板放入绝对位置div
并避免让自己感到头疼postMessage
错误和其他{{1}怪癖。
供参考,如果有人在iframe
尝试使用本地html
时遇到类似问题,我的方式是这样做的:
iframe
然后,我可以直接修改同一域上$('body').after('<div id=\"flowframe\"></div>');
$('#flowframe').load(chrome.extension.getURL("hoverwindow.html"));
的元素而不会出现问题。