Changeset 23851

Show
Ignore:
Timestamp:
11/17/08 00:26:24 (8 weeks ago)
Author:
drry
Message:
  • fixed and removed subversion properties.
  • et cetera.
Location:
lang/javascript/document.write.dom
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/document.write.dom/document.write.dom.js

    • Property svn:executable deleted
    r1775 r23851  
    1 // Auhtor: Naoki Okamura (Nyarla) <thotep@nyarla.net> 
    2 // this script is public domain. 
     1// Author: Naoki Okamura (Nyarla) <thotep@nyarla.net> 
     2// This script is in the public domain. 
    33 
    44(function () { 
    55 
    6 if ( ! window.DOMParser ) { 
     6if ( typeof window.DOMParser == 'undefined' ) { 
    77    return; 
    88} 
     
    1111var generateHTMLDOM = function ( text ) { 
    1212    var div = '<div xmlns="http://www.w3.org/1999/xhtml">' + text + '</div>'; 
     13    var dom, root; 
    1314 
    1415    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; 
    1718    } 
    1819    catch ( e ) { 
     
    2526 
    2627    return root; 
    27 } 
     28}; 
    2829 
    29 var buffer      = []; 
    30 var lastNode    = false; 
     30var buffer   = []; 
     31var lastNode = false; 
    3132 
    3233var getReferenceNode = function ( node ) { 
    33     if ( node && node.nodeName && node.nodeName.toLowerCase() == 'script' ) { 
     34    if ( node && node.nodeName && node.nodeName == 'script' ) { 
    3435        return node; 
    3536    } 
    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 ); 
    3939 
    40         if ( element ) { 
    41             return element; 
    42         } 
    43         else { 
    44             return lastNode; 
    45         } 
     40    if ( element ) { 
     41        return element; 
    4642    } 
    47 } 
     43    return lastNode; 
     44}; 
    4845 
    4946var writeHTML = function ( content, refNode ) { 
     
    5350 
    5451    buffer = buffer.concat( content ); 
    55     var dom = generateHTMLDOM( buffer.join('') ); 
     52    var dom = generateHTMLDOM( buffer.join( '' ) ); 
     53    var parent; 
    5654 
    5755    if ( dom ) { 
    5856        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; 
    6560 
    6661            parent.insertBefore( node, refNode.nextSibling ); 
    6762            refNode = node; 
    68         } 
     63        } ); 
    6964    } 
    7065 
     
    7267 
    7368    return; 
    74 } 
     69}; 
    7570 
    7671document.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}; 
    8075 
    8176document.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}; 
    8681 
    8782})(); 
  • lang/javascript/document.write.dom/index.xhtml

    r1742 r23851  
    55<head> 
    66    <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"/> 
    88</head> 
    99<body> 
    10 <pre><script type="text/javascript"><![CDATA[ 
     10<pre><script type="application/javascript"><![CDATA[ 
    1111 
    1212document.write('<strong>document.write '); 
     
    2424 
    2525]]></script> 
    26 <script type="text/javascript"><![CDATA[ 
     26<script type="application/javascript"><![CDATA[ 
    2727 
    2828document.write('bar</em>');