2013-08-16 3 views
0

, когда я добавить тег сценария в тег тела моей index.html непосредственно, как показано ниже:document.write становится недействительным в Javascript файле, который добавляется AppendChild

<script type="text/javascript" src='**doc_write_in_it.js**'></script> 

Он работает хорошо, " test doc write "выводится там.

Но если я пишу другим способом, как показано ниже:

<script type="text/javascript"> 
    var model = document.createElement('script'); 
    model.setAttribute('type','text/javascript'); 
    model.setAttribute('src','doc_write_in_it.js'); 
    var bd = document.getElementsByTagName('body')[0]; 
    bd.appendChild(model); 
</script> 

document.write становится недействительным в Javascript файле, который добавляется на AppendChild.

Предупреждение в doc_write_in_it.js покажет, но текст в документе.write нет.

doc_write_in_it.js файл выглядит так:

alert('activited'); 
document.write('test doc write"); 

Надежда кто-то может помочь ... Большое спасибо ...

+0

Проверить здесь http://stackoverflow.com/questions/802854/why-is-document-write-considered-a-bad-practice – elclanrs

+0

вы попробуйте добавить OnLoad вокруг кода или последний раз, когда тело закрывается? – Sergio

+0

Я попытался поместить его в функцию, но результат тот же, «alert» показать себя или «console.log» показать себя, кроме «document.write» – auCrux

ответ

0

document.write будет перезаписывать что-нибудь еще до него. Итак, если вы абсолютно уверены, что это то, что вы хотите делать. Тогда вам, вероятно, придется ждать загрузки страницы, а затем запустить document.write. Что-то на линии ниже ..

<script> 
function my_onload_fn() { 
    document.write("test document write"); 
} 
</script> 

<body onload="my_onload_fn();"> 
+0

В моем случае документ document.write, кажется деактивированным или по каким-либо другим причинам он ничего не выводит, даже если я помещаю его в функцию window.onload. – auCrux

+0

@auCrux, так что вы видите? появляется оповещение? и document.write не .. или никто из них не выполняет? – v2b

+0

@auCrux в doc_write_in_it.js, поставьте alert и document.write в функцию .. и вызовите эту функцию onload на странице html. Мне интересно, перезаписывает ли document.write страницу еще до того, как что-то еще может произойти ... – v2b

0

На самом деле, document.write не влияет при загрузке страницы, но вы можете вызвать document.open(), чтобы сделать его Возможное.

Ввод кода сценария в script тег является синхронным, в то время как при загрузке файла сценария с помощью манипулирования DOM является асинхронным, поэтому, если страница проста, страница может быть загружена при document.write(..) пробегов и сделать document.write(...) ничего не делать, если document.open() не вызывается.

alert('activited'); 
document.open(); 
document.write('test doc write'); 
document.close(); 

Это будет работать. И проверьте это link, чтобы узнать больше.

1

как указано выше, document.write не работает, когда страница уже загружена. Я предлагаю использовать свойство innerHTML всякий раз, когда вы можете.

пример:

var bd = document.getElementsByTagName('body')[0]; 
bd.innerHTML = "some text";