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;
});

Nubi 22.09.2009 00:21

мб я что-то не так делаю, но этот код почему-то не хочет работать. Тестируюсь пока с одним файлом (index.htm) локально. Я добавил в нем перед закрывающим body
<script type="text/javascript">ready = 1</script>
, а скрипт обработчика, как и скрипт jquery подключен в голову (внешние файлы). Новое окно с index.htm создается, но вот ссылки в рамку не обводятся...

Octane 22.09.2009 00:51

Вложений: 1
Проверил в Firefox 3.5, Opera 10, Internet Explorer 8, Google Chrome 4, Safari 4.

Nubi 22.09.2009 01:07

спасибо, теперь понятно в чем загвоздка - файл с окном уже присутсвует (window.html) у меня же задача специфическая - зря сразу не сказал, мозги людям пудрил ;-). В новом окне должна открываться та же страница, на которой призошел клик по ссылке-обработчику. В этом то и проблема...

Octane 22.09.2009 01:30

тогда еще проще
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(function() {
	$("#link").click(function() {
		open(this.href + "#windowed", "Wnd");
		return false;
	});
	if(location.hash == "#windowed") {
		$("a").css("border", "10px solid #f00");
	}
});
</script>
</head>
<body>
	<div><a id="link" href="index.html">link</a></div>
</body>
</html>


Цитата:

Сообщение от Nubi
зря сразу не сказал, мозги людям пудрил

Зато я теперь знаю, что только Firefox позволяет назначить обработчик onload для нового окна :)

Nubi 22.09.2009 13:04

Octane,
благодарю, выручил - оч. нужное для меня решение.

Владислав Филиппов 24.07.2014 19:48

Решил поднять тему...

Доброго всем здравия!
У меня подобная задача, есть основная страница (index.html) которая должна открыть другую из заготовки (coordreport.html). В заготовке есть <div> куда js-ом вставляется содержимое. Работает в хроме, а в файерфокс не хочет. Проверено в винде 8 и убунту 14.

вот весь код

function parseWKT() {

    var report = window.open('coordreport.html', 'Report'); 
    report.onload = function () {
        var newtable = table.html();
        var data = $('#coord', report.document);
        data.html('<table>' + newtable + '</table>');
        return false;
    };
    report.focus();
    
}


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