Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Манипуляции внутри созданного окна с помошью jQuery (https://javascript.ru/forum/jquery/5158-manipulyacii-vnutri-sozdannogo-okna-s-pomoshyu-jquery.html)

Nubi 21.09.2009 21:20

Манипуляции внутри созданного окна с помошью jQuery
 
Можно ли как то с помощью jQuery манипулировать с вновь созданным окном (window.open):
$("#link").click(function() {
		var newWin = window.open("url", "Wnd");
		newWin.focus();
		function change(){
			$("a").css("color","red");
		}	
		newWin.change()
    });

и так и сяк крутился, не хочет работать; а может это вообще не достижимо?

Octane 21.09.2009 21:26

В новом окне не подключен же jQuery? Возможно, так заработает:
$("#link").click(function() {
        var newWin = window.open("url", "Wnd");
        newWin.focus();
        $("a", newWin.document).css("color","red");
    });

при условии, что все в пределах одного домена происходит.

Nubi 21.09.2009 21:39

пока на домене нет возможности протестировать, попробовал просто со статичным файлом
var newWin = window.open(this.href, "Wnd");
- не работает ;(.
Да все будет на одном домене, jquery будет подключен и в новом окне тоже. Это имеет значение?

Koc 21.09.2009 21:50

а что если newWin.$ = $; ?
или newWin.window.$ = $;

Octane 21.09.2009 22:17

а забыл, надо же дождаться загрузки нового окна:
$("#link").click(function() {
	var newWin = open(this.href, "Wnd");
	newWin.onload = function() {
		$("a", newWin.document).css("color", "red");
	};
	return false;
});

newWin.onload вставил, потому что ни $(newWin.document).ready(…), ни $(newWin).load(…) не заработали.

Nubi 21.09.2009 22:21

2 Koc не совсем понял, поясни.

$("#link").click(function() {
	var newWin = window.open("url", "Wnd");
	newWin.focus();
	newWin.onload = function() {
		$("a", newWin.document).css("color","red");
	}
	return false;	
});


Octane, вот такая конструкция заработала в Fx. В опере все равно не хочет ссылки перекрашивать. подскажите кроссбраузерное решение ;)
upd. думаем об одном и том же ;). как же оперу натравить?
и еще момент - может для верности создание нового окна повесить в саму ссылку на onClick? Боюсь что браузеры будут блокировать окно...

Koc 21.09.2009 22:30

Nubi,
я предлагаю как бы передать ф-цию $ (jQuery) вновь созданному окну. Насколько я знаю у новых окон (равно как и у фреймов) своя область видимости.

ну и далее в этом новом окне работать с jQuery

Octane 21.09.2009 22:31

Только в FF и работает :) щас подумаю, как сделать

Nubi 21.09.2009 22:35

В осле еще выскакивет "Error "null" есть null или не является объектом" А против этого есть лекарство?

Octane 21.09.2009 23:32

Не хотят они никак onload выполнять, наверное, тогда выход один: добавить перед </body> для каждого нового окна:
<script type="text/javascript">ready = 1</script>

А из родительского окна уже по таймеру запускать действие:
$("#link").click(function() {
	var newWin = open(this.href, "Wnd");
	(function() {
		if(newWin.ready) {
			$("a", newWin.document).css("border", "10px solid #f00");
		} else {
			setTimeout(arguments.callee, 20);
		}
	})();
	return false;
});


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