MyFaces Core
  1. MyFaces Core
  2. MYFACES-3509

Array.prototype.forEach used in browsers that do not natively support this function

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.0.14, 2.1.8
    • Component/s: General
    • Labels:
      None
    • Environment:
      IE8

      Description

      While running one of our test applications in IE8 we got this "Object doesn't support this property or method" error occurring.
      After debugging the code the problem was located in api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Lang.js code. It seems that 'arrForEach' is trying to use the browser native 'forEach' function but it fails since IE8 (or IE7) does not implement it.

      Here is a constructed call stack that shows when and where the error occurs:

      (startPos) ? arr.slice(startPos).forEach(func, thisObj) : arr.forEach(func, thisObj); – file: api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Lang.js, line: 346
      this._Lang.arrForEach(this._q, closure, this._space); – file: api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Queue.js, line: 155
      this.each(broadCastFunc); – file: api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_ListenerQueue.js, line: 80
      this._evtListeners.broadcastEvent(eventData); – file: api/src/main/javascript/META-INF/resources/myfaces/_impl/core/Impl.js, line: 564
      ....

      I noticed that in api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_LangQuirks.js there's a version of 'arrForEach' function that iterates over elements using a plain 'for' loop. Unfortunately this version of the method is not loaded because of the condition at the top of the file is not fulfilled. I attached a patch that we used to get things going. Of course you might have a better solution to this issue.

      Here's also the original JIRA case: http://jira.icesoft.org/browse/ICE-7899

      1. MYFACES-3509-1.patch
        0.6 kB
        Leonardo Uribe

        Activity

        Mircea Toma created issue -
        Mircea Toma made changes -
        Field Original Value New Value
        Description While running one of our test applications in IE8 we got this "Object doesn't support this property or method" error occurring.
        After debugging the code the problem was located in api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Lang.js code. It seems that 'arrForEach' is trying to use the browser native 'forEach' function but it fails since IE8 (or IE7) does not implement it.

        Here is a constructed call stack that shows when and where the error occurs:

        (startPos) ? arr.slice(startPos).forEach(func, thisObj) : arr.forEach(func, thisObj); (file: api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Lang.js, line: 346)
        this._Lang.arrForEach(this._q, closure, this._space); (file: api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Queue.js, line: 155)
        this.each(broadCastFunc); (file: api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_ListenerQueue.js, line: 80)
        this._evtListeners.broadcastEvent(eventData); (file: api/src/main/javascript/META-INF/resources/myfaces/_impl/core/Impl.js, line: 564)
        ....

        I noticed that in api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_LangQuirks.js there's a version of 'arrForEach' function that iterates over elements using a plain 'for' loop. Unfortunately this version of the method is not loaded because of the condition at the top of the file is not fulfilled. I attached a patch that we used to get things going. Of course you might have a better solution to this issue.

        Here's also the original JIRA case: http://jira.icesoft.org/browse/ICE-7899
        While running one of our test applications in IE8 we got this "Object doesn't support this property or method" error occurring.
        After debugging the code the problem was located in api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Lang.js code. It seems that 'arrForEach' is trying to use the browser native 'forEach' function but it fails since IE8 (or IE7) does not implement it.

        Here is a constructed call stack that shows when and where the error occurs:

        (startPos) ? arr.slice(startPos).forEach(func, thisObj) : arr.forEach(func, thisObj); -- file: api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Lang.js, line: 346
        this._Lang.arrForEach(this._q, closure, this._space); -- file: api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_Queue.js, line: 155
        this.each(broadCastFunc); -- file: api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_ListenerQueue.js, line: 80
        this._evtListeners.broadcastEvent(eventData); -- file: api/src/main/javascript/META-INF/resources/myfaces/_impl/core/Impl.js, line: 564
        ....

        I noticed that in api/src/main/javascript/META-INF/resources/myfaces/_impl/_util/_LangQuirks.js there's a version of 'arrForEach' function that iterates over elements using a plain 'for' loop. Unfortunately this version of the method is not loaded because of the condition at the top of the file is not fulfilled. I attached a patch that we used to get things going. Of course you might have a better solution to this issue.

        Here's also the original JIRA case: http://jira.icesoft.org/browse/ICE-7899
        Leonardo Uribe made changes -
        Attachment MYFACES-3509-1.patch [ 12524566 ]
        Leonardo Uribe made changes -
        Status Open [ 1 ] Patch Available [ 10002 ]
        Hide
        Leonardo Uribe added a comment -

        Checking this issue I notice the patch was not provided in our jira, but is in ICE-7899. I took the idea and rebuilt the patch against latest code.

        Show
        Leonardo Uribe added a comment - Checking this issue I notice the patch was not provided in our jira, but is in ICE-7899. I took the idea and rebuilt the patch against latest code.
        Hide
        Werner Punz added a comment -

        I will check and apply the patch on monday.

        Show
        Werner Punz added a comment - I will check and apply the patch on monday.
        Hide
        Werner Punz added a comment -

        Thanks for the patch, the fix now is applied

        Show
        Werner Punz added a comment - Thanks for the patch, the fix now is applied
        Werner Punz made changes -
        Status Patch Available [ 10002 ] Resolved [ 5 ]
        Fix Version/s 2.0.14-SNAPSHOT [ 12320762 ]
        Fix Version/s 2.1.8-SNAPSHOT [ 12320758 ]
        Resolution Fixed [ 1 ]
        Leonardo Uribe made changes -
        Fix Version/s 2.0.14 [ 12320763 ]
        Fix Version/s 2.1.8 [ 12320759 ]
        Fix Version/s 2.1.8-SNAPSHOT [ 12320758 ]
        Fix Version/s 2.0.14-SNAPSHOT [ 12320762 ]
        Leonardo Uribe made changes -
        Status Resolved [ 5 ] Closed [ 6 ]
        Transition Time In Source Status Execution Times Last Executer Last Execution Date
        Open Open Patch Available Patch Available
        36d 22h 37m 1 Leonardo Uribe 26/Apr/12 20:44
        Patch Available Patch Available Resolved Resolved
        4d 23h 15m 1 Werner Punz 01/May/12 19:59
        Resolved Resolved Closed Closed
        42d 18h 51m 1 Leonardo Uribe 13/Jun/12 14:51

          People

          • Assignee:
            Unassigned
            Reporter:
            Mircea Toma
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development