2010-07-17 4 views
2

Lorsque j'écris le code suivant directement dans ma page html sous un tag de script, la chaîne "test" est ajoutée à ma page sans remplacer le reste de son contenu (1):Javascript document.write comportement étrange dans Firefox

document.write("test"); 

Cependant, si je place ce même code dans un fichier javascript séparé comme (2):

<script src="http://127.0.0.1/whatever.js" type="text/javascript"></script> 

Soudain, ce même code réécrit ma page entière.

Existe-t-il un moyen d'effectuer un document.write() à partir d'un fichier distant et obtenir le résultat en (1)?

Merci pour votre temps.

+0

Où êtes-vous incluez le script exactement? Quelle partie du document? –

+0

c'est-à-dire. – Benjamin

+0

Vous ne devriez vraiment pas utiliser 'document.write'. Il y a quelques utilisations, mais pas dans un script que vous importez dans des pages. – Pointy

Répondre

3

Si vous utilisez doc.write pendant le rendu de la page de page, il insérera ou ajoutera la chaîne. Si vous utilisez doc.write après son rendu, ou après window.onload, il recommencera essentiellement le processus de rendu et écrasera la page.

Je suppose que vous avez un comportement asynchrone lors du chargement du script, et qu'il ne s'exécute qu'après chargement. Je ne peux pas recréer votre problème.

+0

Merci d'avoir trouvé ce que mon problème et je pouvais résoudre avec succès. – Benjamin

0

Vous pouvez inclure votre script en haut de la page. Où il récupère le document.write() et écrit donc le texte au lieu d'ajouter un comportement.

+0

pourriez-vous me donner une preuve de concept? – Benjamin

0

La solution plus sûre consiste à ajouter un élément de document à la page - qui devrait toujours travailler