document.write по событию
Здравствуйте!
Есть код со стороннего сайта: <!-- вставка туров --> <script type='text/javascript'> document.write("<script language='JavaS"); document.write("cript' sr"); document.write("c='http://www.rozalist.ru/transl_tours/js_translation.php?"); document.write(document.location.search.substr(1)); document.write("&script_name=countries&agencymail=xxx@inbox.ru"); document.write("'></sc"); document.write("ript>"); </script> <!-- конец вставка туров --> Я хочу у себя на сайте сделать так что бы он выполнялся при определенном событии но в этом случае он у меня отрабатывает так что все окно сайта становиться белым и на этом фоне делается нужный вывод...если я его вставляю в страницу то все работает нормально не нарушая внешний вид сайта. Пожалуйста помогите разобраться. |
/google document.write
|
в гугле написано, что нужно делать через innerHTML но через него не отрабатывает скрипт
|
при событии выполняйте следующий код:
script = document.createElement('script'); script.type = "text/javascript"; script.src = "http://www.rozalist.ru/transl_tours/js_translation.php?"+document.location.search.substr(1)+"&script_name=countries&agencymail=xxx@inbox.ru"; document.getElementByTagName('head')[0].appendChild(script); |
Сделал вот так:
<a href="#" onclick="test()">test</a> function test() { script = document.createElement('script'); script.type = "text/javascript"; script.src = "c='http://www.rozalist.ru/transl_tours/js_translation.php?"+document.location.search.substr(1)+"&script_name=countries&agencymail=xxx@inbox.ru"; document.getElementsByTagName('head')[0].appendChild(script); } Ничего не происходит. В консоль хрома попадает вот это: Код:
GET http://xxx.ru/c='http://www.rozalist.ru/transl_tours/js_translation.php?&script_name=countries&agencymail=xxx@inbox.ru 404 (Not Found) |
А, ну да, забыл там 1 кусочек убрать.
Исправил пост, попробуйте ещё раз script = document.createElement('script'); script.type = "text/javascript"; script.src = "http://www.rozalist.ru/transl_tours/js_translation.php?"+document.location.search.substr(1)+"&script_name=countries&agencymail=xxx@inbox.ru"; document.getElementByTagName('head')[0].appendChild(script); |
Теперь ошибок нет. Загрузка со стороннего сайта идет, но ничего не появляется на странице.
|
Цитата:
|
должен выводиться список стран
|
innerHTML = '' "; используй, если я понял в чем проблема |
1. За*я в head его подключать если сказано что скрипт что=то выводит. Ясен х*й , что ни*я не работает. 2. Скорее всего в том скрипте, что передаётся тоже используется document.write, по этому подключить его где-то ещё тоже не вариант, работать всё равно не будет. Надо делать в таком случае свой перехватчик write. |
Цитата:
document.write = function(s) { document.getElementById('writeOut').innerHTML += s; }?? |
Тира того, только функция должна накапливать поступающие данные и только после полной загрузки делать innerHTML, ибо код может подаваться кусками(как в первом посте).
|
И как по вашему ф-ия должна определять, когда закончится вывод?
|
Цитата:
|
melky,
Так что ли? document.write = function(s) { document.write.timer && clearTimeout(document.write.timer); document.write.bufer || (document.write.bufer = ''); document.write.bufer+=s; document.write.timer = setTimeout(function(){document.getElementById('writeOut').innerHTML+=document.write.bufer},1000); } |
Цитата:
как-то так : код писался на коленке и не тестился! var target = document.body, // куда слить баффер. old_write = document.write, // на всякий buff = ""; // сам баффер document.write = function(text){ buff += text; }; document.addEventListener("DOMContentLoaded", function rollback(){ document.write = old_write; // возвращаем на место старый врайт target.insertAdjacentHTML("afterbegin", buff); // вставляем текст. document.removeEventListener("DOMContentLoaded", rollback, false); // удаляем обработчик, ибо он уже не нужен. }, false); |
melky,
Не маньячим. Человеку нужен вывод по событию, и скорее всего, по клику там и т.п. А вы ему своё onDOMContentLoaded суёте. P. S. Свой пост подправил. Там забыл таймер переменной присвоить |
Цитата:
|
Часовой пояс GMT +3, время: 12:42. |