Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Изменение HTML кода в другом окне (https://javascript.ru/forum/events/22890-izmenenie-html-koda-v-drugom-okne.html)

Почемучкин 04.11.2011 12:33

Изменение HTML кода в другом окне
 
Нужно скриптом открыть страничку, но не по адресу, а сгенерированную моим же скриптом.
То есть html-код должен быть сгенерирован на лету или чтобы можно было изменить страничку в другом окошке после его открытия.
Как это сделать?

ksa 04.11.2011 13:09

Цитата:

Сообщение от Почемучкин
Как это сделать?

Прямо так и сделать...

<script type="text/javascript">
function Test() {
	var w=window.open()
	w.document.writeln('Text...')
}
</script>
<input type="button" value="Test" onclick='Test()' />

Почемучкин 04.11.2011 14:39

Есть одна проблема, не знаю как ее решить:
Если в таргет-окошке загружена вебстраница, например http://google.ru, то не получается ее изменить - сразу ошибка javascript и выполнение скрипта прекращается. Пробовал
w.document.write('HELLO');
и
w.document.body.innerHTML += '<div><h1>HELLO</h1></div>';

Но если изменить
w.location = "about:blank";
то тогда скрипт отрабатывает без проблем и все пишется и меняется без ошибок.

В чем может быть проблема? То есть как изменить или дополнить уже загруженную вебстраничку?

p.s. и еще IE все время спрашивает позволить ли выполнить активный контент (скрипт) - при какждой попытке предпросмотра. как это отключить?

ksa 04.11.2011 17:37

Цитата:

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

Это он делает только в локальной сети... В инете этого вопроса не будет.

Цитата:

Сообщение от Почемучкин
как изменить или дополнить уже загруженную вебстраничку?

Как и текущую. Только обращаться нужно "через переменную"...

tmp.html
<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
function Test() {
	var w=window.open('tmp1.html')
	w.document.getElementById('test').innerHTML='Hello word!'
}
</script>
</head>
<body>
<input type="button" value="Test" onclick='Test()' />
</body>
</html>

tmp1.html
<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
</script>
</head>
<body>
<div id='test'></div>
</body>
</html>

Почемучкин 04.11.2011 18:32

А просто заменить страницу на свой текст или дописать в конец нельзя?

ksa 04.11.2011 18:55

Цитата:

Сообщение от Почемучкин
А просто заменить страницу на свой текст

Тогда не понятно зачем та страница вообще... :) Просто используй мой первый вариант.

Цитата:

Сообщение от Почемучкин
дописать в конец нельзя?

Мой второй пример может запросто послужить тому примером. :) Просто "вконце страницы" я любовно приготовил ДИВ для вставки...

Почемучкин 04.11.2011 20:00

1. Но если страница чужая - там ведь нет подготовленного дива с известным id - когда я хочу добавить в конец страницы свой код.

2. Что касается полной замены на свой хтмл-код, то просто интересно, почему это не работает? Ни document.innerHTML, ни document.body.innerHTML не получается заменить.

Kolyaj 05.11.2011 09:37

К чужой странице доступа вы не получите.

Почемучкин 05.11.2011 17:32

А почему?

Kolyaj 05.11.2011 23:47

Потому что в противном случае, я бы с вашего клиент-банка денег бы снял без вашего ведома.


Часовой пояс GMT +3, время: 11:31.