Conflito estranho do protótipo / jQuery do Chrome
Temos um aplicativo com código legado que se baseia no protótipo, mas descobrimos que ele é muito 'pesado' para a maioria dos lugares em que queremos usá-lo e descobrimos que o jQuery é mais adequado para a forma como trabalhamos. Então, estamos migrando para o jQuery para novas funcionalidades.
nquanto isso, temos várias páginas que precisam carregar as duas biblioteca
<script language="javascript" type="text/javascript"
src="prototype-1.5.1.2.js"></script>
<script language="javascript" type="text/javascript"
src="jquery-1.3.2.js"></script>
<script language="javascript" type="text/javascript">
$j = jQuery.noConflict();
</script>
(observe a versão mais antiga do protótipo, encontramos problemas na atualização que não queremos corrigir quando a desativamos de qualquer maneira)
Isso funciona no IE6, IE7, IE8-as-7 e FX3, mas carrega-o no Chrome e todo o material do jQuery falh
A carregar o console javascript do desenvolvedor exibe os seguintes erros:
Uncaught Error: NOT_SUPPORTED_ERR: DOM Exception 9 http://.../prototype-1.5.1.2.js (line 1272)
Uncaught TypeError: Object #<an Object> has no method 'ready' http://.../lib.js (line 161)
Uncaught TypeError: Object #<an Object> has no method 'slideUp' http://.../page.aspx (line 173)
... and so on - all the failures are missing jQuery methods
Portanto, isso parece um conflito no protótipo que causa falha na criação do objeto jQuer
O problema específico do protótipo parece ser Prototype.BrowserFeatures.XPath sendo verdadeiro quando não deveria, pois o documento XPath document.evaluate não é suportad
Ok, então agora recarregue a página com o console javascript aberto - tudo funciona! WTF? Feche o console, recarregue e ele falhará novament
A falha ocorre apenas quando o carregamento da página ocorre sem o console javascript aberto - por que isso faria alguma diferença? Parece muito com um bug no Chrome.
Alguém capaz de explicar o que está errado? Por que um erro no protótipo causa falha no init do jQuery? Por que carregar a página com o console aberto faz funcionar?
Alguém conhece uma boa solução alternativa? (além da atualização para prototype-1.6.0.3.js, que corrige esse problema, mas quebra um monte de código legado em outro lugar)