You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by we...@apache.org on 2009/09/08 17:58:00 UTC

svn commit: r812569 - /myfaces/core/trunk/api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Utils.js

Author: werpu
Date: Tue Sep  8 15:58:00 2009
New Revision: 812569

URL: http://svn.apache.org/viewvc?rev=812569&view=rev
Log:
https://issues.apache.org/jira/browse/MYFACES-2348

There is a simplification for the handling of this bug, and this one is simply by adding another
local encapsulation to the eval, then mozilla gets it right again.

Modified:
    myfaces/core/trunk/api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Utils.js

Modified: myfaces/core/trunk/api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Utils.js
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Utils.js?rev=812569&r1=812568&r2=812569&view=diff
==============================================================================
--- myfaces/core/trunk/api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Utils.js (original)
+++ myfaces/core/trunk/api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Utils.js Tue Sep  8 15:58:00 2009
@@ -530,24 +530,22 @@
             window.execScript(code);
             return;
         } else if (undefined != typeof (window.eval) && null != window.eval) {
-            myfaces._impl._util._LangUtils.hitch (window, function() {
-            //even if we eval under a different scope the function this references
-            // another function instead of the window object on firefox in the evaled code
-            //Scoping the outer function ensures that the evaluated this points towards
-            //the window object instead of the calling function
 
-            //The funny thing is chrome references window as this without scoping the outer function
-            //Firefox does not and references the calling function as this pointer
-             window.eval.call(this, code);
-            })();
+            //fixup for a mozilla bug, a bug in mozilla prevents, that the window is properly applied
+            //the former approach was to scope an outer anonymouse function but the scoping is not necessary
+            //mozilla behaves correctly if you just add an outer function, then the window scope is again
+            //accepted as the real scope
+            var func = function () {
+                window.eval.call(window, code);
+            };
+            func();
+
             return;
-       }
-       myfaces._impl._util._LangUtils.hitch (window, function() {
-            //even if we eval under a different scope the function this references
-            // another function instead of the window object on firefox
-             eval.call(this, code);
-       })(); 
-    }
+        }
+        //we probably have covered all browsers, but this is a safety net which might be triggered
+        //by some foreign browser which is not covered by the above cases
+        eval.call(window, code);
+    };
 
     /**
      * gets the local or global options with local ones having higher priority