2012-10-30 2 views
0

Je travaille depuis des semaines sur un projet utilisant KineticJS, pas de problème. Il y a quelques minutes, il a commencé à lancer des erreurs lorsque j'ai créé et débogué mes pages.KineticJS et VS2012

C'est l'erreur: exception non gérée à la ligne 2258, colonne 13 /scripts/kinetic-v4.0.3.js

0x800a01b6 - Erreur d'exécution Microsoft JScript: Object ne supporte pas la propriété ou la méthode « indexOf '

Je ne sais pas ce qui se passe, il arrive sur une page avec KineticJS dans tout projet ...

je peux aller ouvrir les pages dans Firefox staright le dossier et evrything fonctionne très bien.

Des idées?

Répondre

3

utilisez-vous un ancien navigateur IE? La méthode indexOf n'est pas prise en charge dans IE6 ou IE7 (ni canvas ne l'est)

+0

Nope, toutes les nouvelles versions ... je ne sais pas ce qui se passe, je peux par inadvertance changé un paramètre dans VS 2012 ou quelque chose ... Notez que c'est une erreur JScript, pas Javascript ... – robtown

+0

ressemble à un problème avec VS, parce que la méthode indexOf est définitivement pris en charge dans les navigateurs modernes (tous les navigateurs qui prennent en charge toile au moins) –

+0

J'ai remarqué que j'avais également perdu mon style CSS3 dans IE9. J'ai passé hier après-midi à essayer de retrouver ce qui s'était passé, mais je n'ai rien trouvé. Une restauration du système l'a corrigé. Mais c'était une mesure de dernier recours. C'est la deuxième fois que j'ai eu un problème avec VS2012 et IE9 faire quelque chose comme ça. Si je n'utilisais pas les appels JSON interdomaines, j'aurais pu continuer à utiliser chrome ou firefox pour déboguer, mais ce n'était pas le cas et j'ai dû trouver un correctif. – robtown

2

La plus grande base de clients de Microsoft pour Internet Explorer est l'entreprise. Les entreprises ont investi d'innombrables dollars et heures dans la création d'applications intranet pour les anciennes versions d'Internet Explorer, qui viendraient remplacer les versions plus récentes/plus conformes aux normes. Par conséquent, pour les sites Web détectés dans la zone Intranet local, IE utilisera par défaut le mode de compatibilité pour que IE9 se comporte comme IE7.

Localhost se trouve être Intranet local par défaut. Cela est probablement la raison pour laquelle aucun des objets et méthodes JavaScript les plus récents n'est disponible lors du débogage F5 à partir de Visual Studio, malgré l'utilisation de IE9.

Heureusement, il y a certaines choses que vous pouvez faire. Le plus facile pour un développeur d'applications est d'inclure juste une balise meta dans l'en-tête de page qui indique IE ignorer le mode de compatibilité lors du rendu cette page:

<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> 

L'approche préférée serait probablement que le serveur Web incluent cet en-tête dans chaque réponse HTTP pour cette application Web. Soit configurer IIS pour le faire, ou inclure les éléments suivants dans le web.config (pour IIS7 +, je crois):

<system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <remove name="X-UA-Compatible"/> 
     <add name="X-UA-Compatible" value="IE=Edge" /> 
     </customHeaders> 
    </httpProtocol> 
</system.webServer> 
+0

+1 nice Jason! Très en profondeur.Très heureux d'avoir un gourou MS nous aider :) –