Javascript IE erreur inattendue (appel à la méthode ou de l'accès à la propriété
J'ai le code suivant, et ça fonctionne (comme d'habitude) en tout, mais IE. Il me fait inattendue de l'appel à la méthode ou de l'accès à la propriété en Jquery et je n'ai aucune idée de la façon de le déboguer. J'ai été en utilisant le IE barre d'outils du développeur, ce qui est inutile pour cette erreur et me donne juste une ligne no 12 (à l'intérieur du script jquery).
Toute aide est la v apprécié:
<script type="text/javascript">
$(document).ready(function () {
$.history.init(pageload);
$('a[href=' + window.location.hash + ']').addClass('selected');
$('a[rel=ajax]').click(function () {
var hash = this.href;
hash = hash.replace(/^.*#/, '');
$.history.load(hash);
$('a[rel=ajax]').removeClass('selected');
$(this).addClass('selected');
$('.loading').show();
getPage();
return false;
});
});
function pageload(hash) {
if (hash) getPage();
}
function getPage() {
hash = document.location.hash;
hash = hash.replace(/^.*#/, '');
var data = 'page=' + encodeURIComponent(hash);
$.ajax({
url: "index.php",
type: "POST",
data: data,
cache: false,
success: function (html) {
$('.loading').hide();
$('tbody').html(html);
}
});
}
</script>
Voici l'histoire de plugin: http://plugins.jquery.com/project/history
Et voici la démo, j'ai suivi:
http://plugins.jquery.com/project/history
Encore changer de fenêtre.emplacement du document.l'emplacement ne semble pas faire une différence
Je suis perdue sur ce coup. Quand je change le tag, je vais appeler pour qu'il ne poste donc ça fonctionne, mais sous IE, le design est tout cassé et a la prochaine les liens que je clique sur ne pas les publier. Vraiment étrange!! Fonctionne très bien sous firefox, opera, etc.
Vous devez vous connecter pour publier un commentaire.
Je suis un peu surpris IE se plaint à ce sujet, mais c'est une bonne chose qu'il fait: il Vous manque une déclaration
getPage
pourhash
(par exemple, mettrevar
en face de la première utilisation).Sur les autres, c'est sans doute la création d'un implicite global (une propriété de la
window
objet appeléhash
), ce qui est évidemment une Mauvaise Chose(tm), mais ce que je comprends c'est que c'est correct d'après le cahier des charges (les sections pertinentes étant 8.7 ["La RéférenceType"] et 10.1.4 ["Chaîne d'Étendue et de la Résolution de l'Identificateur"]).
Toujours surpris c'est à dire est de se plaindre, si. Il doit avoir à faire avec le cadre dans lequel jQuery est d'appeler votre gestionnaire de clic.
tbody
tag, oui. Je viens de réaliser que vous faisiez$('tbody').html(html)
-- faites votre vraiment envie d'écrire ce contenu à chaquetbody
sur la page? Et quel est le code HTML que vous avez écrit pour elle? Persumably une série detr
éléments... IE n'est pas beaucoup comme vous le marinage sur les lignes de la table viainnerHTML
, mais je suppose que jQuery est la manipulation que pour vous (Prototype, et je ne pense pas que jQuery est plus en arrière dans ce domaine, mais je ne sais pas jQuery bien).SI vous obtenez cette erreur lors de l'utilisation des éléments HTML5 dans IE, assurez-vous que vous utilisez html5shim à dire c'est à dire que ce sont de vrais éléments.
Il sera l':
IE renvoie une erreur lorsque vous essayez de mettre certaines choses à l'intérieur de certains nœuds. Par exemple
Pour résoudre ce problème, ajoutez le
html
à un élément différent. Par exemple, vous pourriez essayer:Je ne peux pas trouver une méthode d'histoire dans le jQuery API donc je présume que c'est soit:
Ma conjecture est que IE (bien connue de la pollution de la portée mondiale en rendant tout global) pense que toute référence à histoire signifie en fait fenêtre.l'histoire et c'est à se confondre. Si c'est un objet personnalisé, essayez de le renommer en myHistory ou quoi que ce soit d'autre.
Je pense que M. Crowder est à quelque chose. Aussi loin que je peux dire de l'jQuery source, si votre code HTML renvoyé fragment ne contient pas de
<script>
balises, et ne pas avoir un couple de d'autres pas trop de chances caractéristiques, jQuery est probablement en train de bourrer dans votre<tbody>
élément à l'aide de la "innerHTML" de la propriété. IE n'est pas comme ça.Ce que vous avez à faire est d'envelopper toute la
<table>
dans un faux<div>
et puis de reconstruire l'ensemble de la chose à partir de votre code HTML.J'ai eu ce problème dans une application web utilisés les éléments HTML5. Quand j'ai compris la Modernizr script dans les pages, le problème a été résolu.
J'ai eu le même problème. À l'origine, il y avait une liste de sélection qui a été d'obtenir un ajouté à la fin. Le long de la façon de les sélectionner a été changé pour un champ de saisie. En essayant d'ajouter une balise d'option pour un champ de saisie semblent faire IE malheureux.
J'ai eu le même problème à l'heure actuelle. Il me semble que c'est le cas pour les non-éléments visibles. Vérifiez si votre élément est visible au moment de l'appel de
.html()
sur elle.Êtes-vous définir tous les champs de saisie?
J'ai eu le même problème, en boucle par le biais d'un tableau de valeurs, mais j'avais changé une zone de texte à une entrée. Dans google Chrome, il l'ignore, mais IE 8 coups.
$("#someID").html("someValue")
= boum! sur IE 8 si someID est une entréeDéjà eu le val d'appel, mais nécessaire pour enlever le html un.
$("#someID").val("someValue")
= bon