javascript-Chrome iframe父级未定义
作者:互联网
我有这个用于Gmail的脚本.它在canvas_frame iframe中运行.
我想使用parent.document获取父文档的句柄.但是在Chrome浏览器中告诉我它是未定义的.在Firefox中可以正常工作,但在Chrome上会崩溃.
因此,如何在Chrome浏览器的iframe中精确地获取父文档的句柄.
Chrome版本:11.0.686.3
这是失败的代码:
function init() {
try {
if(parent == null) {
console.log(typeof parent);
window.setTimeout(init, 200);
return;
}
// SOME MORE STUFF
} catch(e) { console.log(e) }
}
这部分只是在日志窗口中无休止地输出未定义.
这是一个产生相同结果的测试脚本.它输出未定义,然后连续输出cQ.
// ==UserScript==
// @name TEST SCRIPT FOR CHROME
// @version 1.0
// @namespace 1nfected
// @description TEST
// @include http://mail.google.com/*
// @include https://mail.google.com/*
// ==/UserScript==
(function() {
if(document.documentElement.className != 'cQ') {
console.log('not our frame');
return;
}
function init() {
if(window.parent == null) {
console.log(typeof window.parent);
console.log(document.documentElement.className);
window.setTimeout(init, 1000);
return;
}
console.log('Found the parent');
}
init();
})();
解决方法:
Chrome中的UserScript受限制,尤其是在涉及iframe时.
您为什么不能以其他方式这样做呢?例如:
var frame = document.getElementById('canvas_frame');
if (frame) {
var dom = frame.contentDocument;
}
更好的答案是Chrome Extensions,您可以使用Content Script(而不是用户脚本)进行更多控制.
标签:userscripts,google-chrome,greasemonkey,javascript 来源: https://codeday.me/bug/20191102/1994591.html