在 IE8 中访问 iframe Object.prototype

Access to iframe Object.prototype in IE8

我在页面上有一个 iframe 元素,我需要为 iframe 中的对象创建一些原型方法。

我有 iframe window

var win = iframe.contentWindow || iframe.contentDocument.defaultView;

然后尝试创建方法。在 FF、Chrome 和 IE9+ 中很简单:

win.Object.prototype.func = myFunc;

但它在 IE8 中不起作用。我在 win.Object 中未定义。 同时 win.Element 完美运行。

如何在 IE8 中获取 iframe 对象?

您可以在 iframe 中插入一个 script 元素,这会在外部 window 中创建一个指向内部 Object 的全局变量:

var doc = iframe.contentDocument,
    s = doc.createElement('script');
s.text = "parent.Object2 = Object;";
doc.appendChild(s);
doc.removeChild(s);

然后,您可以使用Object2.prototype

好吧,这很简单。 足以在 iframe 中创建空脚本 - 并且对象(如 win.Object、win.Element 等)在 IE 中可用。