You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2010/05/12 19:09:39 UTC

svn commit: r943582 - /tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js

Author: hlship
Date: Wed May 12 17:09:39 2010
New Revision: 943582

URL: http://svn.apache.org/viewvc?rev=943582&view=rev
Log:
TAP5-1129: Don't use Element.outerHTML as it is IE only

Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js?rev=943582&r1=943581&r2=943582&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js Wed May 12 17:09:39 2010
@@ -567,14 +567,22 @@ var Tapestry = {
 	 */
 	replaceElementTagName : function(element, newTagName) {
 
-		var tag = $(element).tagName;
-		var outerHTML = $(element).outerHTML;
+		element = $(element);
+
+		var tag = element.tagName;
+
+		/* outerHTML is IE only; this simulates it on any browser. */
+
+		var dummy = document.createElement('html');
+		dummy.appendChild(element.cloneNode(true));
+		var outerHTML = dummy.innerHTML;
+		dummy.innerHTML = '';
 
 		var replaceHTML = outerHTML.replace(new RegExp("^<" + tag, "i"),
 				"<" + newTagName).replace(new RegExp("</" + tag + ">$", "i"),
 				"</" + newTagName + ">");
 
-		$(element).insert( {
+		element.insert( {
 			before : replaceHTML
 		}).remove();
 	}