Javascript 扩展iframe的文档DOM

Javascript 扩展iframe的文档DOM,javascript,iframe,prototype,document,Javascript,Iframe,Prototype,Document,我已经有一组用于扩展文档的函数,即绑定/取消绑定。所以我可以做一些事情,比如:document.bind'load',someAction,{} 但如果我这样做,它就不起作用:$'some_iframe'.contentWindow.document.bind。。。 显然,$'some_iframe'.contentWindow.document.prototype不存在 编辑: 以下是代码分解: //the eggplant library eggp = { extend: funct

我已经有一组用于扩展文档的函数,即绑定/取消绑定。所以我可以做一些事情,比如:document.bind'load',someAction,{}

但如果我这样做,它就不起作用:$'some_iframe'.contentWindow.document.bind。。。 显然,$'some_iframe'.contentWindow.document.prototype不存在

编辑: 以下是代码分解:

//the eggplant library
eggp = {
    extend: function(dest, source){
        for(var prop in source)
            dest.prototype[prop] = source[prop];
        return dest;
    },
    //other functions below...  
    bind{},  
    unbind{}
}
//extend the DOM
eggp.extend(Document, eggp);
//extending the iframe document DOESN'T WORK
eggp.extend(someiframe.contentWindow.document, eggp);
我已检查someiframe.contentWindow.document是否未定义,但它返回对象HTMLDocument

您最初是如何扩展文档的?您不需要扩展HTMLDocument.prototype而不是document.prototype,因为后者不是构造函数吗


意思是你在iframe中扩展了错误的东西?如果我错了,请告诉我您最初是如何扩展它的。

我猜一些iframe是一个ID。要使用jQuery按ID选择对象,您需要使用,就像在CSS中一样

所以它应该是$'some_iframe'.eq0.contentWindow.document.prototype

如果不使用,则用于按标记名选择


因此,$'p'将选择页面上的所有标签。

您不能这样做,至少不能以跨浏览器的方式。理想情况下,您可以扩展HTMLDocument对象的原型,但当然,IE首先没有这个对象。作为一种解决方法,您可以创建一个函数来创建IFrame并自动扩展其文档对象,并专门使用该函数来创建IFrame,但是如果框架已经在页面上,那么除了循环遍历每个框架并手动扩展它之外,您就无能为力了

$('iframe').each(function() {
    MyLibrary.extend(this.contentWindow.document, MyDocumentPrototype);
});
假设使用jQuery,在这里插入您自己的库代码以获取所有iframe


但是,一般来说,扩展内置DOM对象是一个非常困难的问题,因此您应该想出另一种方法来做您想做的事情。

您能提供扩展文档的代码吗?与实际问题没有直接关系,但是,当你承认你只是在复制原型时,为什么还要使用自己的库呢?我使用自己的库有很多原因:我不能在不理解别人的代码的情况下使用别人的代码;我无法理解jQuery或prototype,所以我开始编写自己的;我正在为一个正在编程的web构建软件设计库的功能。。。。等等,我并没有完全复制原型,因为我不能真正理解他们在做什么,因为我不擅长JavaScript。所以,我想我只是在做些什么。不知道为什么要投否决票。但我很肯定我说的是对的,这与问题无关。我没有否决你,我的扩展函数引用了目标和源。然后循环遍历所有源函数并扩展目标函数。它是这样的:dest.prototype[prop]=src[prop],模仿我相信prototype.js所做的。所以,要用我的函数库扩展文档,我说:library.extendDocument,library;它可以用于制作文档。绑定。。。但不适用于iframe.contentWindow.document。那么,我应该改为使用HTMLDocument吗?我使用HTMLDocument进行了检查,但没有改变。是的,我开始意识到扩展DOM的问题,但我认为我会继续使用它,直到我学到足够的知识,可以制作更好的接口。无论如何。。。在这段代码中,与您的示例类似,使用我的库:eggp.extendsomeiframe.contentWindow.document,eggp;将返回dest.prototypeundefined@Azmisov:文档没有原型对象。您必须直接扩展它:document.property1=blah等等。谢谢,这就是我需要知道的全部。