You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2011/04/29 15:32:03 UTC
svn commit: r1097813 -
/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax-debug.js
Author: mgrigorov
Date: Fri Apr 29 13:32:02 2011
New Revision: 1097813
URL: http://svn.apache.org/viewvc?rev=1097813&view=rev
Log:
WICKET-3023 Ajax does not work with XHTML
Use DOM API based function to set HTMLElement's innerHTML so it works for XHTML (application/xml+html mime type)
Modified:
wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax-debug.js
Modified: wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax-debug.js
URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax-debug.js?rev=1097813&r1=1097812&r2=1097813&view=diff
==============================================================================
--- wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax-debug.js (original)
+++ wicket/branches/wicket-1.4.x/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax-debug.js Fri Apr 29 13:32:02 2011
@@ -61,7 +61,7 @@ var WicketAjaxDebug = {
if (typeof(label) != "undefined")
msg = "<b>" + label + "</b>" + msg;
- c.innerHTML = msg;
+ WicketAjaxDebug.doInnerHTML(c, msg);
c.setAttribute("style","font-size: 82%; margin: 0px; padding:0px");
d.appendChild(c);
@@ -217,7 +217,40 @@ var WicketAjaxDebug = {
} else {
return false;
}
- }
+ },
+
+ /**
+ * A XHTML Strict safe function to set HTMLElement's innerHTML.
+ * WICKET-3023
+ */
+ doInnerHTML: function(elem, html) {
+
+ try {
+ var children = elem.childNodes;
+
+ for (var i = 0; i < children.length; i++) {
+ elem.removeChild(children[i]);
+ }
+
+ var nodes = new DOMParser().parseFromString(html, 'text/xml');
+ var range = document.createRange();
+ range.selectNodeContents(elem);
+ range.deleteContents();
+
+ for (var i = 0; i < nodes.childNodes.length; i++) {
+ elem.appendChild(nodes.childNodes[i]);
+ }
+ return true;
+ } catch (e) {
+ try {
+ elem.innerHTML = html;
+ return true;
+ }
+ catch(ee) {
+ return false;
+ }
+ }
+ }
};
WicketAjaxDebug.addEvent(window, "load", WicketAjaxDebug.init);
\ No newline at end of file