Changeset 23851 for lang/javascript/document.write.dom
- Timestamp:
- 11/17/08 00:26:24 (5 years ago)
- Location:
- lang/javascript/document.write.dom
- Files:
-
- 2 modified
-
document.write.dom.js (modified) (5 diffs, 1 prop)
-
index.xhtml (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/javascript/document.write.dom/document.write.dom.js
- Property svn:executable deleted
r1775 r23851 1 // Au htor: Naoki Okamura (Nyarla) <thotep@nyarla.net>2 // this script ispublic domain.1 // Author: Naoki Okamura (Nyarla) <thotep@nyarla.net> 2 // This script is in the public domain. 3 3 4 4 (function () { 5 5 6 if ( ! window.DOMParser) {6 if ( typeof window.DOMParser == 'undefined' ) { 7 7 return; 8 8 } … … 11 11 var generateHTMLDOM = function ( text ) { 12 12 var div = '<div xmlns="http://www.w3.org/1999/xhtml">' + text + '</div>'; 13 var dom, root; 13 14 14 15 try { 15 var dom= parser.parseFromString( div, 'application/xhtml+xml' );16 var root= dom.documentElement;16 dom = parser.parseFromString( div, 'application/xhtml+xml' ); 17 root = dom.documentElement; 17 18 } 18 19 catch ( e ) { … … 25 26 26 27 return root; 27 } 28 }; 28 29 29 var buffer = [];30 var lastNode = false;30 var buffer = []; 31 var lastNode = false; 31 32 32 33 var getReferenceNode = function ( node ) { 33 if ( node && node.nodeName && node.nodeName .toLowerCase()== 'script' ) {34 if ( node && node.nodeName && node.nodeName == 'script' ) { 34 35 return node; 35 36 } 36 else { 37 var element; 38 if ( node.lastChild ) element = arguments.callee( node.lastChild ); 37 var element; 38 if ( node.lastChild ) element = arguments.callee( node.lastChild ); 39 39 40 if ( element ) { 41 return element; 42 } 43 else { 44 return lastNode; 45 } 40 if ( element ) { 41 return element; 46 42 } 47 } 43 return lastNode; 44 }; 48 45 49 46 var writeHTML = function ( content, refNode ) { … … 53 50 54 51 buffer = buffer.concat( content ); 55 var dom = generateHTMLDOM( buffer.join('') ); 52 var dom = generateHTMLDOM( buffer.join( '' ) ); 53 var parent; 56 54 57 55 if ( dom ) { 58 56 buffer = []; 59 var nodes = Array.prototype.slice.call(dom.childNodes); 60 var parent = refNode.parentNode; 61 62 for ( var i = 0, len = nodes.length; i < len; i++ ) { 63 var node = nodes[i]; 64 if ( ! node ) continue; 57 parent = refNode.parentNode; 58 Array.prototype.slice.call( dom.childNodes ).forEach( function ( node ) { 59 if ( !node ) return; 65 60 66 61 parent.insertBefore( node, refNode.nextSibling ); 67 62 refNode = node; 68 } 63 } ); 69 64 } 70 65 … … 72 67 73 68 return; 74 } 69 }; 75 70 76 71 document.write = function () { 77 var content = Array.prototype.slice.call( arguments);78 writeHTML( content, getReferenceNode( document) );79 } 72 var content = Array.prototype.slice.call( arguments ); 73 writeHTML( content, getReferenceNode( document ) ); 74 }; 80 75 81 76 document.writeln = function () { 82 var content = Array.prototype.slice.call( arguments);83 content[content.length] = "\n";84 writeHTML( content, getReferenceNode( document) );85 } 77 var content = Array.prototype.slice.call( arguments ); 78 content[content.length] = '\n'; 79 writeHTML( content, getReferenceNode( document ) ); 80 }; 86 81 87 82 })(); -
lang/javascript/document.write.dom/index.xhtml
r1742 r23851 5 5 <head> 6 6 <title>document.write hack</title> 7 <script type=" text/javascript" src="./document.write.dom.js"></script>7 <script type="application/javascript" src="./document.write.dom.js"/> 8 8 </head> 9 9 <body> 10 <pre><script type=" text/javascript"><![CDATA[10 <pre><script type="application/javascript"><![CDATA[ 11 11 12 12 document.write('<strong>document.write '); … … 24 24 25 25 ]]></script> 26 <script type=" text/javascript"><![CDATA[26 <script type="application/javascript"><![CDATA[ 27 27 28 28 document.write('bar</em>');
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)