Added basic support for IFrames, disabled a test which we don't take into account.

This commit is contained in:
John Resig 2007-07-08 23:19:09 +00:00
parent b5bf00a373
commit 69ef5fac9e
2 changed files with 28 additions and 8 deletions

View file

@ -79,6 +79,9 @@ var window = this;
this._dom = Packages.javax.xml.parsers.
DocumentBuilderFactory.newInstance()
.newDocumentBuilder().parse(file);
if ( !obj_nodes.containsKey( this._dom ) )
obj_nodes.put( this._dom, this );
};
DOMDocument.prototype = {
@ -145,6 +148,10 @@ var window = this;
}
};
function getDocument(node){
return obj_nodes.get(node);
}
// DOM NodeList
window.DOMNodeList = function(list){
@ -188,10 +195,10 @@ var window = this;
return makeNode( this._dom.cloneNode(deep) );
},
get ownerDocument(){
return document;
return getDocument( this._dom.ownerDocument );
},
get documentElement(){
return document.documentElement;
return makeNode( this._dom.documentElement );
},
get parentNode() {
return makeNode( this._dom.getParentNode() );
@ -396,6 +403,22 @@ var window = this;
blur: function(){},
get elements(){
return this.getElementsByTagName("*");
},
get contentWindow(){
return this.nodeName == "IFRAME" ? {
document: this.contentDocument
} : null;
},
get contentDocument(){
if ( this.nodeName == "IFRAME" ) {
if ( !this._doc )
this._doc = new DOMDocument(
new java.io.ByteArrayInputStream((new java.lang.String(
"<html><head><title></title></head><body></body></html>"))
.getBytes("UTF8")));
return this._doc;
} else
return null;
}
});

View file

@ -21,17 +21,14 @@ test("$()", function() {
$('<p>\r\n</p>');
ok( true, "Check for \\r and \\n in jQuery()" );
/* // Disabled until we add this functionality in
var pass = true;
try {
var f = document.getElementById("iframe").contentDocument;
f.open();
f.write("<html><body></body></html>");
f.close();
$("<div>Testing</div>").appendTo(f.body);
$("<div>Testing</div>").appendTo(document.getElementById("iframe").contentDocument.body);
} catch(e){
pass = false;
}
ok( pass, "$('&lt;tag&gt;') needs optional document parameter to ease cross-frame DOM wrangling, see #968" );
ok( pass, "$('&lt;tag&gt;') needs optional document parameter to ease cross-frame DOM wrangling, see #968" );*/
});
test("isFunction", function() {