如何允许iframe访问Element.prototype

时间:2016-11-19 14:56:48

标签: javascript

我创建了诸如hasClass()之类的原型,因此我可以调用e.target.hasClass('className');。现在,当我调用它的原型时,我的页面上有一个iframe,当我在页面构建器上工作时,我会一直进出。但是,如果我指的是iframe中的元素,则原型函数不存在于元素中。

如何让Element.prototype函数在父元素和iframe中都能正常工作?

2 个答案:

答案 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");