jQuery .load() appel de ne pas exécuter le code JavaScript dans HTML chargé de fichier
Cela semble être un problème lié à Safari seulement. J'ai essayé 4 sur Mac et 3 sur Windows et je suis encore avoir pas de chance.
Je suis en train de charger un fichier HTML externe et ont le JavaScript qui est incorporé exécuter.
Le code que j'utilise est: est-ce
$("#myBtn").click(function() {
$("#myDiv").load("trackingCode.html");
});
trackingCode.html
ressemble à ça (simple maintenant, mais vous développez une fois/si je reçois ce travail):
<html>
<head>
<title>Tracking HTML File</title>
<script language="javascript" type="text/javascript">
alert("outside the jQuery ready");
$(function() {
alert("inside the jQuery ready");
});
</script>
</head>
<body>
</body>
</html>
J'en vois deux messages d'alerte dans IE (6 & 7) et Firefox (2 & 3). Cependant, je ne suis pas en mesure de voir les messages dans Safari (le dernier navigateur que j'ai besoin d'être concerné avec les exigences du projet - s'il vous plaît pas de guerres de flamme).
Des idées sur le pourquoi de Safari, c'est ignorer le JavaScript dans le trackingCode.html
fichier?
Finalement, je voudrais être en mesure de passer des objets JavaScript à ce trackingCode.html
fichier pour être utilisé dans le jQuery prêt appel, mais je voudrais être sûr que cela est possible dans tous les navigateurs avant de m'en aller sur la route.
Vous devez vous connecter pour publier un commentaire.
Vous chargez une page HTML dans votre div, y compris le html, head et body balises. Qu'advient-il si vous ne la charge et ont juste le script d'ouverture, de clôture du script et du code JavaScript dans le code HTML que vous avez la charge?
Voici le pilote de la page:
Voici le contenu de trackingCode.html:
Cela fonctionne pour moi dans Safari 4.
Mise à jour: Ajout de la balise DOCTYPE html et de l'espace de noms afin de correspondre au code sur mon environnement de test. Testé avec Firefox 3.6.13 et un exemple de code qui fonctionne.
Une autre version de Jean Choisir la solution de juste avant, cela fonctionne très bien pour moi :
Je me rends compte que c'est un peu d'un vieux post, mais pour la personne qui vient vers cette page à la recherche d'une solution similaire...
http://api.jquery.com/jQuery.getScript/
Cela ne semble pas fonctionner si vous êtes en train de charger le champ HTML dans un créé dynamiquement élément.
Je regarde firebug DOM et il n'y a pas de script nœud à tous, seulement l'HTML et mon CSS nœud.
Quelqu'un a rencontré ce?
Vous avez presque obtenu. Dire jquery vous voulez charger uniquement le script:
En trackingCode.html:
J'ai essayer de faire un plugin jquery html pour fonction de chargement. Veuillez consulter le lien suivant.
http://webtech-training.blogspot.in/2010/10/dyamic-html-loader.html
Veuillez me suggérer pour améliorer davantage.
Grâce,
Mohan
Bien j'ai eu le même problème que ne semblait se passer pour Firefox, et je ne pouvais pas utiliser un autre JQuery commande sauf pour .load() depuis que j'ai été la modification de l'avant la fin de l'existant sur les fichiers PHP...
De toute façon, après l'utilisation de l' .load() de la commande, j'ai incorporé mon script JQuery dans le HTML externe qui étaient chargés, et ça semblait fonctionner. Je ne comprends pas pourquoi le JS que j'ai chargé dans le haut du document principal ne fonctionne pas pour le nouveau contenu, mais...
J'ai été en mesure de résoudre ce problème en changeant
$(document).ready()
àwindow.onLoad()
.J'ai couru dans ce où les scripts de chargement une fois, mais des appels répétés ne serait pas exécuter le script.
Il s'est avéré être un problème avec l'aide de .html() pour afficher une attente de l'indicateur, puis l'enchaînement .load() après elle.
Quand je leur ai fait des appels distincts, mon inline scripts chargés de tous les temps comme prévu.
Pour la recherche, notez qu'il existe deux versions de .load()
Un simple .load() appel (sans sélecteur d'après l'url) est simplement un raccourci pour appeler $.ajax() avec dataType:"html" et de prendre le retour de contenu et d'appel .html() pour mettre le contenu dans les DOM. Et de la documentation pour dataType:"html" stipule clairement "inclus des balises de script sont évalués lors de leur insertion dans les DOM." http://api.jquery.com/jquery.ajax/ Donc .load() a officiellement exécute les scripts inline.
Un complexe .load() appel a un sélecteur telles que la charge("page.html #contenu"). Lorsque utilisé de cette façon, jQuery dessein de filtrer les balises de script tel que discuté dans les articles comme celui-ci: https://forum.jquery.com/topic/the-load-function-and-script-blocks#14737000000752785 Dans ce cas, les scripts ne jamais exécuter, même pas une fois.