2010-10-27 6 views
0

J'ai un certain nombre de plugins Jquery appelés via mon fichier .info Drupal Acquia Marina thème.drupal, plugins Jquery et IE6/IE7

Ils fonctionnent correctement dans tous les navigateurs courants à l'exception de IE6 et IE7, dans lesquels ils n'apparaissent pas du tout chargés.

Certains des plugins sont très basiques, comme le slideToggle suivant, qui, comme tous, existe comme aa fichier .js référencé dans un appel de script .info -

$(document).ready(function() 
{ 
    //hide the all of the element with class msg_body 
    $(".collapse-content").hide(); 
    //toggle the componenet with class msg_body 
    $(".collapse-head").click(function() 
    { 
    $(this).next(".collapse-content").slideToggle(400); 
    }); 
}); 

Une autre est encore plus simple -

$(document).ready(function() 
{ 
$(".principal-input").hide(); 
} 
); 

les autres sont une version légèrement adaptée de l'outil de liste imbriquée jstree, un tablesorter et deux variantes sur la case pliables/arbres radio. Je ne sais pas comment résoudre le problème sans outils de diagnostic de type firebug, mais je suppose que ces scripts ne se chargent pas du tout, car aucun comportement n'est visible.

La seule erreur que je reçois dans les deux IE6 ou IE7 est

Line: 3 
Char: 3 
Error: Object doesn't support this property or method 
Code: 0 

J'ai secoué le code et ne pense pas que cela soit probable que tous les plug-ins souffrent de la virgule de la mort (http : //stackoverflow.com/questions/2562736/jquery-ui-accordion-degrades-in-ie6-or-ie7-but-is-working-in-ie8).

Une exception est le plugin TinyMCE, qui fonctionne toujours avec IE6 et IE7. Étant donné la densité du code TinyMCE et mon manque d'expérience, je n'ai pas été en mesure de comprendre pourquoi TinyMCE n'est pas affecté. Il est appelé à partir du fichier .info de la même manière.

Il est tout à fait possible que cela n'a rien à voir avec Drupal, et est un problème avec Jquery seul, mais toute opinion sur pourquoi cela pourrait se produire serait apprécié. Merci, William.

Répondre

1

Après avoir utilisé les outils de développement IE8 et en cours d'exécution en mode IE7, j'ai pu identifier le problème.

tablesorter vomissait une erreur qui a arrêté tous mes autres plugins dans leurs pistes.

Ligne 24 de jquery.tablesorter.pager.js lit

top: o.offset().top + o.height() + 'px', 

Retrait de la virgule de fin résout le problème. Tablesorter (et par conséquent tous les autres plugins chargés après) fonctionnent maintenant dans IE6 et IE7.

0

J'essaierais d'aller dans admin/settings/performance et de m'assurer que les fichiers Optimize Javascript sont activés. Ma conjecture est que IE limite le nombre de fichiers JS que vous appelez.

+0

Merci pour la suggestion Jimmy. l'optimisation Unfotuately JS provoque quelques anomalies étranges dans les comportements qui laisse sans doute fortement vers les conflits sous-jacents que Javascript IE est d'être un peu moins indulgent au sujet que les autres navigateurs. Il est temps de faire un travail de détective. – bulkhead