2010-05-21 3 views
0

Il s'agit d'un problème que j'ai rencontré sur Windows et Mac depuis de nombreux mois et qui me rend fou. Chaque fois que je dépose une directive "debugger" ou que je mets un point d'arrêt dans la console de scripts Safari, plus de la moitié du temps où le code casse où il est supposé, mais la vue de code est vide; certains fichiers JS sont également vides, mais pas tous. La console me dit sur quelle ligne je suis et affiche la pile d'appels correctement, plus je peux parcourir mon code. Je ne peux pas voir le script. J'ai essayé de vider mon cache et de désactiver mon cache et de modifier les fichiers JS (en pensant que c'est peut-être parce que le code est compilé à ce moment-là). Rien ne semble aider. Je sais que si je rafraîchis suffisamment le débogueur (clic-droit et 'recharger'), je verrai finalement mon script. Mais c'est un processus qui prend du temps. Et j'utiliserais un navigateur différent, mais j'ai besoin d'utiliser Safari dans ce cas.Débogueur JavaScript Safari toujours vide

Une chose qui pourrait être un facteur est que j'introduis des fonctions et j'assigne des fonctions anonymes aux variables (à la Douglas Crockford). Est-ce que quelqu'un d'autre a ce problème? Quelqu'un a-t-il une solution? [Edit] Je viens de remarquer que lorsque le fichier se détache d'un serveur distant, il apparaît très bien. Mes fichiers logiques primaires, cependant, sortent de ma pile LAMP locale d'un hôte virtuel et ils sont TOUS vides. Encore une fois, ils finiront par apparaître. Peut-être que c'est une chose Apache?

[Modifier] Cela semble être lié au problème écrit ailleurs: par ex. "Resource interpreted as other but transferred with MIME type application/javascript". Le problème est que j'ai parcouru mes en-têtes http, mes tags <meta> et mes tags <script> pour m'assurer que les types mime sont cohérents.

Lorsque vous tirez vers le bas un fichier JS, selon gondoler, mes en-têtes HTTP sont:

< HTTP/1.1 200 OK 
< Date: Fri, 21 May 2010 13:04:42 GMT 
< Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8l DAV/2 PHP/5.3.1 
< Last-Modified: Fri, 21 May 2010 08:48:15 GMT 
< ETag: "dda3a6-2214-48716c07891c0" 
< Accept-Ranges: bytes 
< Content-Length: 8724 
< Cache-Control: no-cache 
< Content-Type: application/x-javascript 

... mon index.html a cela dans la tête:

<meta http-equiv="content-script-type" content="application/x-javascript"> 

... et j'appelle mes fichiers JS comme ceci:

<script type="application/x-javascript" src="Application.js"></script> 

L'avertissement que je vois dans la fenêtre des ressources de Safari est:

Resource interpreted as other but transferred with MIME type application/x-javascript 

Apache semble tout faire correctement! Je soumettrais ceci comme un bug de Safari, mais cela semble seulement se produire pour mon serveur local.

Répondre

1

Je pense que j'ai isolé le problème et la solution est simple: si vous avez besoin de déboguer, désactivez l'onglet Ressources dans Safari; et si vous avez besoin de suivre les ressources, ne vous attendez pas à pouvoir déboguer car souvent vous ne pourrez pas le faire. Je pensais que c'était seulement un problème avec mon environnement local, mais c'est un problème dont j'ai été témoin avec beaucoup de sites maintenant que j'ai commencé le test; Je n'ai jamais remarqué parce que je n'avais pas essayé le suivi des ressources et le débogage simultanément sur d'autres sites. Cela doit être un problème avec la fenêtre de débogage car cela n'a absolument aucun impact sur l'exécution du script dans la fenêtre du navigateur; en fait, même le débogueur peut garder une trace des points d'arrêt et de l'avancement du code, il ne peut tout simplement pas vous montrer le code que vous franchissez. Ce problème n'apparaît pas dans Chrome, donc je suppose qu'il s'agit d'un problème uniquement lié à Safari plutôt que d'un problème Web plus large.

Je vais essayer de poster ceci au traqueur de bugs d'Apple.