JavaScript - управление точкой вставки для document.write

Я думаю, лучше иметь локальную установку, которая полностью находится под Вашим контролем во время разработки, чтобы удостовериться, чтобы изменения, внесенные другими разработчиками, не вмешивались в Ваше собственное. У меня есть установка среды разработки и тестовой среды локально, таким образом, я могу выполнить обе задачи, не будучи должен принять других разработчиков во внимание. Я постоянно запускаю свои тесты, поскольку я кодирую автотест использования, подразумевая, что я могу быть уверен, что мой код корректен и удовлетворяет корректную спецификацию.

После того, как кодовая база в порядке, я развертываюсь к серверу подготовки (который является средой, которая является максимально близко к производству), и повторно выполните тесты. Мы также используем наш этап, чтобы выполнить тестирование загрузки и сделать пользователя, тестирующего.

17
задан Crescent Fresh 8 October 2009 в 11:23
поделиться

5 ответов

Исходный ответ до редактирования:


В основном проблема document.write заключается в том, что он не работает в документах XHTML . Тогда наиболее широкое решение (каким бы суровым оно ни казалось) - не использовать XHTML / xml для вашей страницы. Из-за IE + XHTML и проблемы с mimetype , взлома Google AdSense (может быть, и хорошо :) и общего перехода на HTML5 я не думаю, что это так плохо, как кажется.

Однако если вы действительно хотите использовать XHTML для своей страницы, то сценарий Джона, на который вы ссылаетесь, - лучшее, что у вас есть на данный момент. Просто понюхайте IE на сервере. Если запрос поступает от IE, ничего не делайте (и не обслуживайте mimetype application / xhtml + xml !). В противном случае поместите его в своей страницы, и вы отправитесь на скачки.

Перечитайте свой вопрос, есть ли у вас конкретная проблема со сценарием Джона? Известно, что в Safari 2.0 он не работает, но не более того.

3
ответ дан 30 November 2019 в 13:46
поделиться

Чтобы изменить содержимое страницы после рендеринга DOM, вам нужно либо использовать библиотеку javascript для добавления HTML или текста в определенные моменты (jQuery, mootools, prototype, ... ) или просто используйте свойство innerHTML каждого элемента DOM для изменения / добавления к нему текста. Это работает в кроссбраузере и не требует никаких библиотек.

0
ответ дан 30 November 2019 в 13:46
поделиться

Есть способы сделать это лучше. 2 способа

1) Добавить

<html><head>
<script>
  window.onload = function () {
    var el = document.createTextNode('hello world');
    document.body.appendChild(el);
  }
</script></head><body></body></html>

2) InnerHTML

<html><head><script>
  window.onload = function () {
    document.body.innerHTML = 'hello world';
  }
</script></head><body></body></html>
-2
ответ дан 30 November 2019 в 13:46
поделиться

You may be interested in the Javascript library I developed which allows to load 3rd party scripts using document.write after window.onload. Internally, the library overrides document.write, appending DOM elements dynamically, running any included scripts which may use document.write as well.

Unlike John Resig's solution (which was part of the inspiration for my own code), the module I developed supports partial writes such as the example you give with the div:

document.write("<"+"div");
document.write(">"+"Done here<"+"/");
document.write("div>");

My library will wait for the end of the script before parsing and rendering the markup. In the above example, it would run once with the full string "

Done here
" instead of 3 times with partial markup.

I have set up a demo, in which I load 3 Google Ads, an Amazon widget as well as Google Analytics dynamically.

3
ответ дан 30 November 2019 в 13:46
поделиться

Если вы имеете дело со скриптами сторонних разработчиков, то простой замены Document.write для захвата вывода и засовывания его в нужное место недостаточно, так как они могут изменить скрипт, и тогда ваш сайт сломается.

writeCapture.js делает то, что вам нужно (полное раскрытие: я - автор). Он в основном переписывает теги сценария так, чтобы каждый из них захватывал свой собственный вывод document.write и помещал его в правильное место. Использование (с помощью jQuery) было бы что-то вроде:

$(document.body).writeCapture().append('<script type="text/javascript" src="http://3rdparty.com/foo.js"></script>');

Здесь я предполагаю, что вы хотите добавить в конец тела. Все селекторы jQuery и методы манипуляции будут работать с плагином, так что вы можете впрыскивать его куда угодно и как угодно. Он также может быть использован без jQuery, если это проблема.

.
11
ответ дан 30 November 2019 в 13:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: