You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2014/12/09 17:29:42 UTC
svn commit: r1644111 - in
/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script:
tobago-sheet.js tobago-utils.js tobago.js
Author: lofwyr
Date: Tue Dec 9 16:29:41 2014
New Revision: 1644111
URL: http://svn.apache.org/r1644111
Log:
TOBAGO-1325: jQuery too slow in IE8: Tobago.Util.selectWithJQuery()
Modified:
myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-sheet.js
myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-utils.js
myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-sheet.js
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-sheet.js?rev=1644111&r1=1644110&r2=1644111&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-sheet.js (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-sheet.js Tue Dec 9 16:29:41 2014
@@ -52,9 +52,9 @@ Tobago.Sheet = function(
this.firstRowRegExp = new RegExp("^" + this.id + "_data_tr_\\d+$");
- this.setup();
-
console.timeEnd("[tobago-sheet] constructor"); // @DEV_ONLY
+
+ this.setup();
};
Tobago.Sheet.init = function(elements) {
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-utils.js
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-utils.js?rev=1644111&r1=1644110&r2=1644111&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-utils.js (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago-utils.js Tue Dec 9 16:29:41 2014
@@ -27,15 +27,76 @@ Tobago.Utils.escapeClientId = function(i
};
/**
+ * @deprecated since Tobago 2.0.5 because of spelling
+ */
+Tobago.Utils.selectWidthJQuery = function(elements, selector) {
+ return Tobago.Utils.selectWithJQuery(elements, selector);
+};
+
+/**
* Helps to select either elements from the whole DOM or only find in sub trees
* (in the case of AJAX partial rendering)
* @param elements a jQuery object to initialize (ajax) or null for initializing the whole document (full load).
* @param selector a jQuery selector.
*/
-Tobago.Utils.selectWidthJQuery = function(elements, selector) {
- return elements == null
- ? jQuery(selector)
- : elements.find(selector).add(elements.filter(selector));
+Tobago.Utils.selectWithJQuery = function(elements, selector) {
+
+ if (elements == null) {
+ return jQuery(selector);
+ }
+
+ if (Tobago.browser.isMsie678) {
+ if (selector.match(/^\[[-_a-zA-Z0-9]+\]$/)) {
+ return Tobago.Utils.ieSelectWidthJQueryAttr(elements, selector);
+ }
+ if (selector == Tobago.Command.INPUTS_FOR_DEFAULT) {
+ return Tobago.Utils.ieSelectWidthJQueryInputs(elements);
+ }
+ }
+
+ return elements.find(selector).add(elements.filter(selector));
+};
+
+/** internal function for IE <= 8 performance */
+Tobago.Utils.ieSelectWidthJQueryAttr = function (elements, selector) {
+ var founds = [];
+ for (var i = 0; i < elements.length; i++) {
+ Tobago.Utils.ieFilterAttributes(elements.get(i), selector.substr(1, selector.length - 2), founds);
+ }
+ return jQuery(founds);
+};
+
+/** internal function for IE <= 8 performance */
+Tobago.Utils.ieSelectWidthJQueryInputs = function(elements) {
+ var founds = [];
+ for (var i = 0; i < elements.length; i++) {
+ var element = elements.get(i);
+ Tobago.Utils.ieFilterTags(element, ["INPUT", "SELECT", "TEXTAREA", "A", "BUTTON"], founds);
+ }
+ return jQuery(founds);
+};
+
+/** internal function for IE <= 8 performance */
+Tobago.Utils.ieFilterTags = function (element, tagNames, result) {
+ for (var i = 0; i < tagNames.length; i++) {
+ if (element.tagName == tagName[i]) {
+ result.push(element);
+ break;
+ }
+ }
+ for (i = 0; i < element.childNodes.length; i++) {
+ Tobago.Utils.ieFilterTags(element.childNodes[i], tagName, result);
+ }
+};
+
+/** internal function for IE <= 8 performance */
+Tobago.Utils.ieFilterAttributes = function (element, filter, result) {
+ if (element[filter] !== undefined) {
+ result.push(element);
+ }
+ for (var i = 0; i < element.childNodes.length; i++) {
+ Tobago.Utils.ieFilterAttributes(element.childNodes[i], filter, result);
+ }
};
Tobago.Utils.findSubComponent = function(element, subId) {
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js?rev=1644111&r1=1644110&r2=1644111&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/script/tobago.js Tue Dec 9 16:29:41 2014
@@ -2505,8 +2505,10 @@ Tobago.Command.initEnter = function(elem
}
})};
+Tobago.Command.INPUTS_FOR_DEFAULT = "input, select, textarea, a, button";
+
Tobago.Command.initInputElements = function(elements) {
- var inputElements = Tobago.Utils.selectWidthJQuery(elements, "input, select, textarea, a, button");
+ var inputElements = Tobago.Utils.selectWidthJQuery(elements, Tobago.Command.INPUTS_FOR_DEFAULT);
inputElements.focus(function (event) {
var target = event.target;
var id = target.id;