[richfaces-svn-commits] JBoss Rich Faces SVN: r2243 - in trunk: framework/impl/src/main/javascript/prototype and 2 other directories.
richfaces-svn-commits at lists.jboss.org
richfaces-svn-commits at lists.jboss.org
Tue Aug 14 07:24:40 EDT 2007
Author: nbelaevski
Date: 2007-08-14 07:24:40 -0400 (Tue, 14 Aug 2007)
New Revision: 2243
Modified:
trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js
trunk/framework/impl/src/main/javascript/prototype/patches.js
trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js
trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js
Log:
- prototype.js: added Event.unloadElementsCache() & Element.isUninitialized() methods
- AJAX.js clears observers cache on AJAX response
- modalPanel.js switched to Element.isUninitialized()
Modified: trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js
===================================================================
--- trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js 2007-08-14 10:58:48 UTC (rev 2242)
+++ trunk/framework/impl/src/main/javascript/ajaxjsf/JSFAJAX.js 2007-08-14 11:24:40 UTC (rev 2243)
@@ -288,7 +288,7 @@
if( ! newnode ) { LOG.error("New node for ID "+id+" is not present in response");return;}
var oldnode = window.document.getElementById(id);
if ( oldnode ) {
- var anchor = oldnode.parentNode ;
+ var anchor = oldnode.parentNode;
// need to check for firstChild due to opera 8 bug with hasChildNodes
Sarissa.clearChildNodes(oldnode);
if(oldnode.outerHTML && !oldnode.tagName.match( /(tbody|thead|tfoot|tr|th|td)/i ) ){
@@ -705,6 +705,11 @@
newinputs = req.getElementsByTagName("INPUT",idsSpan);
A4J.AJAX.replaceViewState(inputs,newinputs);
}
+
+ if (typeof Event != "undefined") {
+ Event.unloadElementsCache();
+ }
+
// Process listeners.
for(var li = 0; li < A4J.AJAX._listeners.length; li++){
var listener = A4J.AJAX._listeners[li];
@@ -793,6 +798,11 @@
var oDomDoc = (new DOMParser()).parseFromString(req.getResponseText(), "text/xml");
if(Sarissa.getParseErrorText(oDomDoc) == Sarissa.PARSED_OK){
LOG.debug("response has parsed as DOM documnet.");
+
+ if (typeof Event != "undefined") {
+ Event.unloadElementsCache();
+ }
+
Sarissa.clearChildNodes(window.document.documentElement);
var docNodes = oDomDoc.documentElement.childNodes;
for(var i = 0;i<docNodes.length;i++){
Modified: trunk/framework/impl/src/main/javascript/prototype/patches.js
===================================================================
--- trunk/framework/impl/src/main/javascript/prototype/patches.js 2007-08-14 10:58:48 UTC (rev 2242)
+++ trunk/framework/impl/src/main/javascript/prototype/patches.js 2007-08-14 11:24:40 UTC (rev 2243)
@@ -27,4 +27,34 @@
}
return supposedParent == node;
+};
+
+Element.isUninitialized = function(element) {
+ if (element) {
+ if (!element.parentNode || element.document && element.document.readyState == "uninitialized") {
+ return true;
+ }
+
+ return false;
+ }
+};
+
+Event.unloadElementsCache = function() {
+ if (!Event.observers) return;
+ var compact = false;
+ var observers = Event.observers;
+ for (var i = 0, length = observers.length; i < length; i++) {
+ var observer = observers[i];
+ var elt = observer[0];
+
+ if (Element.isUninitialized(elt)) {
+ compact = true;
+ Event.stopObserving.apply(Event, observer);
+ observers[i] = null;
+ }
+ }
+
+ if (compact) {
+ Event.observers = observers.compact();
+ }
};
\ No newline at end of file
Modified: trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js
===================================================================
--- trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js 2007-08-14 10:58:48 UTC (rev 2242)
+++ trunk/framework/impl/src/main/resources/org/richfaces/renderkit/html/scripts/utils.js 2007-08-14 11:24:40 UTC (rev 2243)
@@ -50,16 +50,6 @@
return str.substr(0,pxIndex);
};
-Richfaces.isNodeInDOMTree = function(node) {
- var root = document.documentElement;
- var elt = node;
- while (elt && elt != root) {
- elt = elt.parentNode;
- }
-
- return !!elt;
-};
-
Richfaces.visitTree = function(root, callback) {
var node = root;
if (!node) {
Modified: trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js
===================================================================
--- trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js 2007-08-14 10:58:48 UTC (rev 2242)
+++ trunk/ui/modal-panel/src/main/resources/org/richfaces/renderkit/html/scripts/modalPanel.js 2007-08-14 11:24:40 UTC (rev 2243)
@@ -41,7 +41,7 @@
var elt = $(panel.markerId);
- if (!Richfaces.isNodeInDOMTree(elt)) {
+ if (Element.isUninitialized(elt)) {
panel.destroy();
ModalPanel.panels.splice(i, 1);
More information about the richfaces-svn-commits
mailing list