Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Подключение внешних скриптов к динамически создаваемому окну (https://javascript.ru/forum/events/35581-podklyuchenie-vneshnikh-skriptov-k-dinamicheski-sozdavaemomu-oknu.html)

damekkoneko 15.02.2013 09:37

Подключение внешних скриптов к динамически создаваемому окну
 
Здравствуйте! Второй день голову ломаю, уверен, что ошибка в какой-то мелочи, которую не могу заметить.
Прошу вашей помощи.

Имеется календарик (tigracalendar), подключается из "tcal.js", в статике все работает, а как создаю динамическую страницу ничего не работает. Доходит до объявления скрипта и все дальше страничка не подгружается, стоит добавить алерт сразу после объявления источника калдендарика и все норм.

...
win = window.open("", "", "toolbar=0,width=800,height=450");  
win.document.open(); 
win.document.writeln('<!DOCTYPE HTML>');
win.document.writeln('<html><head>');
win.document.writeln('<meta http-equiv="content-type" content="text/html; charset=windows-1251">');
win.document.writeln('<link rel="stylesheet" type="text/css" href="http://ххх/cgi-bin/src/u/tcal.css"/>');
win.document.writeln('<script type="text/javascript" src="http://ххх/cgi-bin/src/u/tcal.js"><\x2fscript>');
win.alert();
win.document.writeln('<title>Проверка отчета</title></head><body>');
...


Что я не замечаю?:-? В tcal.js кавычки используются одинарные, мне казалось, что проблема с кавычками, или с тем, что нужно подождать, пока подгрузится скритп из источника.
Спасибо.

ksa 15.02.2013 10:35

Цитата:

Сообщение от damekkoneko
а как создаю динамическую страницу ничего не работает

Бивас, тест!

<!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">
win = window.open("", "", "toolbar=0,width=800,height=450");  
win.document.open(); 
win.document.writeln('<!DOCTYPE HTML'+'>');
win.document.writeln('<html><head'+'>');
win.document.writeln('<script src="http://code.jquery.com/jquery-latest.js"></script'+'>');
win.document.writeln('<title>Проверка отчета</title'+'>');
win.document.writeln('</head'+'>');
win.document.writeln('<body'+'>');
win.document.writeln('<button id="b" onclick="$(\'#b\').css(\'color\',\'red\')">Test</button'+'>');
win.document.writeln('</body'+'>');
</script>
</head>
<body>
</body>
</html>

Вроде работает...

danik.js 15.02.2013 10:53

Цитата:

Сообщение от damekkoneko
win.document.writeln('<!DOCTYPE HTML>');
win.document.writeln('<html><head>');

Так открытый документ уже содержит
<html>
    <head></head>
    <body></body>
</html>

И доктайп уже вписывать поздно.
ksa, разве нет?

damekkoneko 15.02.2013 11:38

Цитата:

Сообщение от danik.js (Сообщение 234228)
Так открытый документ уже содержит
<html>
    <head></head>
    <body></body>
</html>

И доктайп уже вписывать поздно.

Похоже на то. Но в башку-то надо как-то запихать :(

damekkoneko 15.02.2013 11:56

Техническая мысль прогресса меня подтолкнула проверить это в других браузерах (Изначально проверка в виндовой последней Опере ).
Хром отлично переваривает и все работает.
IE6 загибается и буксует - пишет загрузка данных с http://ххх/cgi-bin/src/u/tcal.css

Чего ж им не нравится?

Стоит к примеру ksa прикрутить вызов окна по кнопке, как сразу все не работает :(
Почему опера нелюбит, когда этот код помещен в функцию?

<!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>
</head><body>
  <script type="text/javascript">
    function s(){
win = window.open("", "", "toolbar=0,width=800,height=450");  
win.document.open(); 
win.document.writeln('<!DOCTYPE HTML'+'>');
win.document.writeln('<html><head'+'>');
win.document.writeln('<script src="http://code.jquery.com/jquery-latest.js"></script'+'>');
win.document.writeln('<title>Проверка отчета</title'+'>');
win.document.writeln('</head'+'>');
win.document.writeln('<body'+'>');
win.document.writeln('<button id="b" onclick="$(\'#b\').css(\'color\',\'red\')">Test</button'+'>');
win.document.writeln('</body'+'>');
    };
</script>
  
  <input type="button" onclick= s()>
</body>
</html>

danik.js 15.02.2013 12:35

Цитата:

Сообщение от damekkoneko
Но в башку-то надо как-то запихать

var doc = win.document,
    script = doc.createElement('script');
script.src = 'http://code.jquery.com/jquery-latest.js';
doc.body.appendChild(script);
doc.title = 'Проверка отчета';

doc.body.innerHTML = '<button id="b" onclick="$(\'#b\').css(\'color\',\'red\')">Test</button'+'>';


Может так?

damekkoneko 15.02.2013 12:48

Цитата:

Сообщение от danik.js (Сообщение 234288)
var doc = win.document,
    script = doc.createElement('script');
script.src = 'http://code.jquery.com/jquery-latest.js';
doc.body.appendChild(script);
doc.title = 'Проверка отчета';

doc.body.innerHTML = '<button id="b" onclick="$(\'#b\').css(\'color\',\'red\')">Test</button'+'>';


Может так?

Да, так правильнее.
Но проблема остается :( все равно опера не прожевывает :(

ksa 15.02.2013 13:43

Цитата:

Сообщение от danik.js
разве нет?

Я лишь потестил пример автора... :)

damekkoneko 27.02.2013 09:46

В общем, я так этот вопрос и не решил. У меня мой пример в Опере работает только, если перед загрузкой странички новое окошко выдаст алерт, в Хроме все ок и без алерта.

Deff 27.02.2013 17:35

<script type="text/javascript">
function MyOpen(str){
var msg = new String("");
msg = "<head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\" /><link rel=\"stylesheet\" type=\"text/css\" href=\"http://javascript.ru/forum/clientscript/vbulletin_css/style-81884d78-00003.css\" /><title>Тest</title> <script src=\"http://code.jquery.com/jquery-latest.js\"><"+"/"+"script>"
msg+="<div class='panel' style='margin-top:45px;color:red;font-size:32px;'><center>"+str+"</center></div>"
msg+="<script>setTimeout(\"$('div').text('Меняем содержимое элемента с помощью jQuery,- Скрипты работают')\",2000);<"+"/"+"script>"
msg+="</body></html>";
popup = window.open("", "", "height=300, width=700, top=300, left=300, scrollbars=1")
popup.document.write(msg)
popup.document.close()
return false
}
</script>
<button onclick="MyOpen('Привет')">Жмём</button>


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