2010-10-28 7 views
0

В основном у меня есть пустая страница html, которая включает в себя файл javascript, а в файле javascript i есть это:не удалось обновить страницу, когда я использую setInterval() и передаю функцию, которая использует document.write для вывода некоторого javascript на страницу

function doIt() { 
document.writeln("asdf"); 
} 

// could also be setTimeout 
setInterval("doIt()", 5000); 

При загрузке страницы HTML, он ждет 5 секунд, а затем выведет «фыва олдж» каждые 5 секунд на экране. Если я нажму обновление или f5, ничего не произойдет. Когда я просматриваю источник, страница пуста. Есть ли причина, почему, когда я смотрю источник, я даже не вижу:

<script type="text/javascript" src="test.js"></script> 

на странице html? Я предполагаю, что я не могу обновить страницу из-за пустого источника. Есть ли способ решить это?

Спасибо!

+0

Это звучит как более простая проблема с установкой. То, что вы пишете с помощью 'document.write', не будет отображаться в представлении« просмотр источника »браузера. Если вы вообще не видите содержимое HTML-страницы, проблема в другом месте –

ответ

1

Вы не можете использовать document.write вот так после завершения загрузки страницы.

Вместо этого вы должны добавить к тексту элемент DOM.

1

Когда страница html загружается, она ждет 5 секунд, а затем выводит «asdf» каждые 5 секунд на экран.

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

И поскольку вы не вызываете document.close(), пульсация будет продолжать вращаться, ожидая завершения нового документа (чего никогда не произойдет).

Как сказал СЛАКС, вы должны взаимодействовать с DOM вместо использования document.write(), которого обычно лучше избегать (за исключением нескольких конкретных случаев, связанных с записью исходных документов во всплывающие окна или iframe).

0

спасибо, ребята. я смог увидеть, что вы, ребята, имели ввиду, чтобы изменить DOM, чтобы добавить в javascript после загрузки страницы. Я был в состоянии сделать это, но столкнулся с тем же вопросом:

В основном мне нужно было использовать setInterval для выполнения некоторых опросов, чтобы ждать отправки данных в этот iframe от родителя, после получения данных, выводят некоторый javascript (который я создал новый элемент сценария в DOM для). но проблема в том, что src этого элемента указывает на внешний url, из которого im получает некоторые данные, и способ, которым внешний источник возвращает данные, - с помощью document.write, - который я не контролирую.

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

- еще одна возможность сделать этот вызов внешнему источнику и проанализировать ответ и создать элементы dom с моим javascript?

0

Просто идея, не имела возможности проверить ее.

Есть сценарий создать пустое окно и ввести скрипт в там, чтобы вызвать внешний сценарий:

var oWindow = window.open("about:blank", "dummy", "width=0,height=0"); 
oWindow.document.write("<html>"); 
oWindow.document.write("<body>"); 
oWindow.document.write("<" + "script" + " type=\"text/javascript\" src=\"external.js\"></" + "script>"); 
oWindow.document.write("</body>"); 
oWindow.document.write("</html>"); 
oWindow.document.close(); 

, а затем прочитать oWindow.document.body.innerHTML, чтобы увидеть «выход» внешнего сценария.