2015-11-03 3 views
0

У меня есть несколько виджетов, как этотБраузеры ошибка на document.write

var c2409 = "<div class="products">PRODUCT1 PRODUCT2 PRODUCT4 ...</div>"; 
document.write(c2409) 

И я называю это

<script src="website/getjswidget.aspx?cid=xxxx-xxxx-xxx-xxxx"></script> 

Теперь выглядит как-то после того, как очистить кэш, это заменить все в моем HTML и Я получаю пустую страницу только с этим div из моего виджета. Любые другие решения для замены document.write?

+0

Можете ли вы дать нам более подробную информацию? Какими виджетами они являются? Для чего они? – Justas

+0

Я использую это, чтобы экспортировать список продуктов в html-код из базы данных, поэтому я могу использовать его для нескольких доменов. – Adrian

+2

Это не ошибка. Document.write предназначен для замены всего содержимого страницы. См. Http://stackoverflow.com/questions/802854/why-is-document-write-considered-a-bad-practice – Reeno

ответ

0

Это по дизайну.

Метод write() в основном используется для тестирования: если он используется после полной загрузки документа HTML, он удалит весь существующий HTML.

Source

Если вы хотите добавить данные на веб-страницу, используйте:

document.body.innerHTML += 'your HTML code to add' 

Edit: Если вы хотите, чтобы показать это в той или иной элемент, вы можете сделать что-то подобное :

<!-- HTML element --> 
<div id="myData"></div> 

<!- Javascript code --> 
document.getElementById('myData').innerHTML += 'your HTML' 

Edit 2 (После некоторого поиска): Вы можете получить текущий элемент сценария с помощью document.currentScript, а затем, возможно, используйте Node.insertBefore, чтобы создать div прямо перед этим тегом скрипта, чтобы поместить ваши данные.

Редактировать 3: Видимо document.currentScript не работает в IE. Но может помочь this answer.

+0

Мне нужно это, чтобы показать после скрипта не в конце тела – Adrian

+0

Вы видите, что я не могу добавить идентификатор сейчас, beacuse I уже используют тысячи виджетов на веб-сайтах. – Adrian

+0

@Adrian Я отредактировал свой ответ. К сожалению, 'document.write' никогда нельзя полагаться на 100% для того, что вы хотите с ним делать, но его реализация, как и в моем ответе, - это способ всегда иметь html, где вы хотите. – Wouter