jQuery не работи в дъщерен прозорец?

Когато пиша:

var x = window.open('','','width=480,height=500');
x.document.write('
<html>
<head>
<link rel="stylesheet" type="text/css" href="/bgchat.css" / >
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"><' +'/script>
<script type="text/javascript">
alert("hi");
<' + '/script>
</head>
<body><p>hi</p></body>
</html>');

Получавам сигнала.

Но ако го направя...

 x.document.write('
<html>
<head>
<link rel="stylesheet" type="text/css" href="/bgchat.css" / >
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js">
<' +'/script>
<script type="text/javascript">
$(function(){
alert("hi");
});
<' + '/script>
</head>
<body><p>hi</p></body>
</html>');

Тогава не става. Не прави нищо. Цяла нощ се опитвах да разбера това. Някакви идеи?


person temporary_user_name    schedule 16.05.2012    source източник


Отговори (1)


Това е така, защото jQuery никога не задейства събитието DOM ready, освен ако правилно не .close() документът след запис в него:

var x = window.open('','','width=480,height=500'),
x.document.write('all your html and script here');
x.document.close();

Дължим кредит: window.open и $(document).ready

person Ja͢ck    schedule 16.05.2012
comment
О, jk. Между другото, форматирах го така само за четливост - всъщност не е написано така. - person temporary_user_name; 16.05.2012
comment
Не променяйте кода, когато публикувате. Във всеки случай пробвах този код вътре в jsfiddle и той работи добре. - person Ja͢ck; 16.05.2012
comment
@Aerovistae Актуализиран отговор с връзка за цигулка - person Ja͢ck; 16.05.2012
comment
Е, ако не отделях редовете, тогава щеше да ви е адски много време да го прочетете. Във всеки случай, както беше отбелязано по-горе, разделянето на редовете не е проблемът - действителният ми код просто го има в един голям блок. Но все пак благодаря. - person temporary_user_name; 16.05.2012
comment
@Aerovistae Разбирам, проверихте ли Fiddle? - person Ja͢ck; 16.05.2012
comment
Разбира се, това е хубава цигулка, но всъщност не използва jQuery в дъщерния прозорец, така че. - person temporary_user_name; 16.05.2012
comment
ДЯВОЛИТЕ Това е интересно. Никога не съм виждал препратка към тази информация. Как разбра това? - person temporary_user_name; 16.05.2012