Chrome czasami nazywa niepoprawny konstruktor

Mamy stronę internetową, która korzysta w dużym stopniu z jQuery i działa dobrze w Firefoksie i IE. Jednak w Chrome coraz częściej (i na wpół losowo)Uncaught TypeError: Cannot call method 'apply' of undefined (zamiast tego pojawiają się także inne metody jQueryapply).

Udało nam się odnaleźć problem w metodzie jQuerypushStack().

Oryginalny kod źródłowy (jQuery 1.7.1):

<code>// Take an array of elements and push it onto the stack
// (returning the new matched element set)
pushStack: function( elems, name, selector ) {
   // Build a new jQuery matched element set
   var ret = this.constructor();

   // (etc.)
}
</code>

Kod z oprzyrządowaniem:

<code>pushStack: function( elems, name, selector ) {
   if (!(this instanceof jQuery.fn.init)) throw this;

   // Build a new jQuery matched element set
   var ret = this.constructor();

   if (!(ret instanceof jQuery.fn.init)) {
          console.log("pushStack>this: " + this.constructor);
          console.log("pushStack>ret: " + ret.constructor);
          throw ret;
   }

   // (etc.)
}
</code>

W większości przypadkówpushStack() działa poprawnie. Jednak czasami Chrome tworzy obiekt typuObject zamiastjQuery.fn.init. Wyjście konsoli:

<code>pushStack>this: function ( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context, rootjQuery );
    }
pushStack>ret: function Object() { [native code] }
Uncaught #<Object>
</code>

Czy ktoś napotkał podobny problem? Czy to (znany) błąd Chrome?

Aktualizacja

Udało mi się uprościć naszą stronę, aby można ją było załadować samodzielnie. wypełniłembłąd w projekcie Chromium projekt, strona do odtworzenia problemu jest tam dołączona.

questionAnswers(2)

yourAnswerToTheQuestion