我创建了诸如hasClass()
之类的原型,因此我可以调用e.target.hasClass('className');
。现在,当我调用它的原型时,我的页面上有一个iframe,当我在页面构建器上工作时,我会一直进出。但是,如果我指的是iframe中的元素,则原型函数不存在于元素中。
如何让Element.prototype
函数在父元素和iframe中都能正常工作?
答案 0 :(得分:2)
您需要访问load事件处理程序中的iframe窗口,并且可以执行以下操作:
var frame = document.getElementById('ifrm');
frame.onload = function() {
var win = this.contentWindow || this.contentDocument;
win.Element.prototype.test = function() {
this.innerHTML = 'Iframe Prototype content'
}
win.document.getElementById('heading').test()
}
因此,如果您要将所有新的原型属性包装到一个函数中,您可以在主窗口上下文和框架窗口上下文中调用它
的 DEMO 强>
答案 1 :(得分:0)
每个窗口都有自己的Element对象。您需要将您的函数添加到属于iframe的元素的原型以及父框架的原型。
或者,不要添加自己的功能。使用the standard one:
e.target.classList.contains("className");