J'écris un petit code JavaScript qui va charger les fichiers js externes au chargement de la page html.Safari et Chrome n'évaluent pas dynamiquement ajouté <script> tag au chargement de la page
J'ai testé 2 façons.
Cas 1: Utilisé document.write pour ajouter <script>. Cela a fonctionné pour tous les navigateurs (IE, FF, Safari, Chrome, Opera).
Cas n ° 2: Utilisé DOMElement.appendChild ajouter < scénario > tag au < Haed élément >.
Fonctionne uniquement pour IE, FF et Opera. N'a pas fonctionné pour Safari et Chrome.
Dans les deux cas, je m'attendais à nouveau <script> tag est en cours d'insertion avant < tête > étiquette de fermeture. Donc le nouveau tag < > est évalué avant de traiter < le corps >, et au moment où window.onload est appelé, la variable "success" doit être vraie.
Mais ce n'était pas pour Safari et Chrome.
Quelqu'un peut-il dire si cela devrait ou ne devrait pas fonctionner? Je vous remercie.
<html>
<head>
<title>JavaScript loading test</title>
<script type="text/javascript">
var success = false;
window.onload = function()
{
document.getElementById("result").innerHTML = success? "OK": "ERROR!";
}
// TEST CASE 1.
// Works for all browsers.
document.write('<script type="text/javascript" src="foo.js"></' + 'script>');
// TEST CASE 2.
// Only works for Opera, FireFox, Opera.
// var scriptElem = document.createElement("script");
// scriptElem.setAttribute("type", "text/javascript");
// scriptElem.setAttribute("src", "foo.js");
// var headElem = document.getElementsByTagName("head")[0];
// headElem.appendChild(scriptElem);
</script>
<!-- expected new scrip tag being inserted here. -->
</head>
<body>
Testing...<br/>
<span id="result"></span>
</body>
</html>
"foo.js" est juste une ligne de code.
success = true;
Juste un commentaire - en modifiant votre exemple un peu, j'ai réussi à obtenir un comportement différent Opera, Firefox, Safari et Safari tout en traversant le code. –
Incidemment, ''...'+'script>' est toujours invalide. La manière la plus simple de protéger un littéral de chaîne d'étiquette de fin à l'intérieur d'un bloc de script est '<\/script'. – bobince
avez-vous déjà trouvé une solution à ce problème? – Fabii