2010-11-09 6 views
0

J'ai commencé à déboguer mon application dans IE7 récemment, et j'ai remarqué une tonne de jQuery et javascript ne se charge pas correctement. Mais si je prends des extraits de la fonction spécifique de mon fichier javascript.js et que je les code en dur au bas de la page sur laquelle je travaille, ça finit par fonctionner!Chargement javascript pour IE7 .. Quel est mon grand 'Do not'?

Ma grande question est ce que une étape puis-je prendre pour que mon jQuery et javascript charge de manière appropriée à partir de son fichier externe respectif?

Voici un exemple de mon fichier .js. C'est juste un petit extrait de code, quand j'ai enlevé ceci de ce fichier et l'ai codé en dur au bas de la page, il a été appelé, cela a fonctionné. Notez également que tout mon code fonctionne parfaitement dans IE8, Safari, Chrome et Firefox.

//javascript.js 

$(document).ready(function() { 
    $('a[rel*=facebox]').facebox() 
    $(".close_facebox").live("click", function(){ 
    $.facebox.close(); 
    }); 
}); 

Et mes javascripts personnalisés sont tous instanciés dans leur bonne hiérarchie d'importance. jQuery d'abord, puis les bibliothèques master, jusqu'à mes mini-scripts personnalisés en dernier.

Mise à jour

Voici une copie de ma tête:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'> 
<head> 
    <meta content='text/html;charset=UTF-8' http-equiv='content-type' /> 
    <title>HQchannel</title> 
    <meta content='Local, New Jersey, Promotions, Coupons, Deals, Businesses, telephone, North Jersey' name='keywords' /> 
    <meta content='Your local guide to events, promotions, and every local company near you. We are local search made wonderful.' name='description' /> 
    <meta content='6670644BEAA93299A81158F71F517217' name='msvalidate.01' /> 
    <meta content='c89c098960f9f17d' name='y_key' /> 

    <link href="/stylesheets/reset.css?1280427413" media="screen" rel="stylesheet" type="text/css" /> 
    <link href="/stylesheets/text.css?1265032682" media="screen" rel="stylesheet" type="text/css" /> 
    <link href="/stylesheets/960.css?1265032682" media="screen" rel="stylesheet" type="text/css" /> 
    <link href="/stylesheets/main.css?1289324536" media="screen" rel="stylesheet" type="text/css" /> 
    <link href="/dynamic_stylesheets/image_css.css" media="screen" rel="stylesheet" type="text/css" /> 
    <![if !(IE 6)]> 
    <link href="/stylesheets/not-ie6.css?1270651849" media="screen" rel="stylesheet" type="text/css" /> 
    <![endif]> 
    <!--[if IE 7]> 
    <link href="/stylesheets/is-ie7.css?1276194187" media="screen" rel="stylesheet" type="text/css" /> 
    <![endif]--> 

    <![if !(IE)]> 
    <link href="/stylesheets/not-ie.css?1278686676" media="screen" rel="stylesheet" type="text/css" /> 
    <![endif]> 
    <link href="/stylesheets/themes/main-booger/jquery-ui-1.7.2.custom.css?1267136221" media="screen" rel="stylesheet" type="text/css" /> 
    <link href="/stylesheets/facebox.css?1289316781" media="screen" rel="stylesheet" type="text/css" /> 
    <script src="/javascripts/jquery-1.3.2.min.js?1265032682" type="text/javascript"></script> 
    <script src="/javascripts/jquery-ui-1.7.2.custom.min.js?1267136221" type="text/javascript"></script> 
    <script src="/javascripts/swfobject.js?1265032682" type="text/javascript"></script> 

    <script src="/javascripts/jquery.dirtyform.js?1265032682" type="text/javascript"></script> 
    <script src="/javascripts/jquery.Jcrop.min.js?1265032682" type="text/javascript"></script> 
    <script src="/javascripts/application.js?1289316793" type="text/javascript"></script> 
    <script src="/javascripts/jquery.updater.js?1268851685" type="text/javascript"></script> 
    <script src="/javascripts/jquery.periodicalupdater.js?1268851685" type="text/javascript"></script> 
    <script src="/javascripts/easyTooltip.js?1265032682" type="text/javascript"></script> 

    <script src="/javascripts/easySlider.js?1267136221" type="text/javascript"></script> 
    <script src="/javascripts/facebox.js?1289316781" type="text/javascript"></script> 
    <script type="text/javascript"> 
    </script> 
    <link href='/images/favicon.ico' rel='shortcut icon' /> 
    <link href="/stylesheets/jquery.Jcrop.css?1265032682" media="screen" rel="stylesheet" type="text/css" /> 
    <link href="/stylesheets/themes/redmond/jquery-ui-1.7.2.custom.css?1265032683" media="screen" rel="stylesheet" type="text/css" /> 
    <link href="/panda_uploader/panda-uploader.css?1272561465" media="screen" rel="stylesheet" type="text/css" /> 

    <script src="/javascripts/jquery-ui-1.7.2.custom.min.js?1267136221" type="text/javascript"></script> 
    <script src="/javascripts/jquery.Jcrop.min.js?1265032682" type="text/javascript"></script> 
    <script src="/javascripts/swfupload.js?1265032682" type="text/javascript"></script> 
    <script src="/javascripts/jquery.swfupload.js?1280435993" type="text/javascript"></script> 
    <script src="/javascripts/manage.js?1289316781" type="text/javascript"></script> 
    <script src="/javascripts/ckeditor/ckeditor.js?1281027480" type="text/javascript"></script> 

    <script src="/panda_uploader/jquery.panda-uploader-1.0.1.min.js?1289316781" type="text/javascript"></script> 
</head> 
+1

Pouvez-vous afficher un exemple de code supplémentaire, comme vos balises ' avec les fichiers externes? – epascarello

+0

Tous vos scripts sont-ils dans la section '' de votre site? – Marko

Répondre

3

Je parie que vous avez une syntaxe qui étrangle IE7 mais pas les autres navigateurs. Celui-ci m'a mordu deux fois

var myLookup = {a: "a", b: "b",}; 

D'autres navigateurs prennent que , arrière mais pas IE7.

De toute façon, voici comment je l'affiner. C'est la méthode de recherche de type "pain-in-the-ass-binary-file". Commencez par effacer complètement votre fichier javascript.js. Chargez la page. Des erreurs? Probablement pas. Maintenant, remplacez la moitié de votre fichier javascript.js. Des erreurs? Si non, alors votre problème est probablement dans la moitié vous avez enlevé. Avez-vous des erreurs? Ensuite, vous avez probablement une erreur dans la moitié que vous avez remise. Enlever la moitié de la moitié et voir si cela provoque des erreurs et ainsi de suite. Finalement, vous allez réduire à une petite chose stupide que IE7 n'aime pas, vous allez changer une ligne de code, et être d'une humeur terrible.

+0

omg ...;) merci ..? – Trip

+3

@Trip Si vous rencontrez ce genre de problème à l'avenir, exécutez votre code via [JSLint] (http: //www.jslint.com /), ce qui peut vous aider à identifier les défauts dans votre code. Il vous montrera beaucoup d'autres choses qui n'ont pas vraiment d'importance, mais un moyen automatisé de trouver des problèmes de syntaxe doit être mieux qu'une méthode manuelle! – lonesomeday

+0

@lonesomeday Qui a trouvé mon problème exact! Merci beaucoup! – Trip

1

En outre, FYI, vous incluez certains fichiers plus d'une fois. Certains de vos commentaires IE conditionnels ne sont pas correctement formatés. Ils vont comme ceci:

<!--[if IE]> //do stuff <![endif]--> 

Vous avez quitté le -- dans les commentaires IE6 mais vos commentaires IE7 sont corrects.