Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выполнение загружаемого и "записываемого" кода 
:(
    Опции темы
_hunter
  Дата 26.5.2010, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



Добрый день,

Есть задача: в новом окне нужно отобразить удаленно сгенерированный код. Делаю простейший пример:

test1.html
Код

<html>
    <head>
        <script language="javascript" type="text/javascript" src="http://localhost/jscript/tiny_mce/tiny_mce_src.js"></script> 
        <script language="JavaScript">
            var sl = tinymce.ScriptLoader;
            sl.add("http://localhost/jscript/test1.js");
            sl.loadQueue();
        </SCRIPT>
    </head>
    <body>
    </body>
</html>


test1.js
Код

alert("test");

При открытии test1.html, как и ожидалось, получаем alert.

Идем дальше: эмулируем получение удаленно сгенеренной страницы:

test2.html
Код

<html>
    <head>
        <script language="JavaScript">
            var httpRequest = new XMLHttpRequest();
            httpRequest.open("GET", "http://localhost/test1.html", false);
            httpRequest.send(null);
            
            var wnd = window.open();
            wnd.document.write(httpRequest.responseText);
            wnd.document.close();
        </SCRIPT>
    </head>
    <body>
    </body>
</html>

и тут начинается какой-то voodoo magic... alert я получаю, но сразу после нажатия OK в Error Console'е появляется error:
Код

Error: tinymce is not defined
Source File: http://localhost/test2.html
Line: 1

Кем/чем, в таком случае (если tinymce -- undefined) загружается test1.js?.. Как, вообще, правильно делать такие вещи?

С уважением...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
ksnk
Дата 26.5.2010, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



а если в test1.html написать 
Код

document.onload=function(){
   var sl = tinymce.ScriptLoader;
   sl.add("http://localhost/jscript/test1.js");
   sl.loadQueue();
}
 так не будет работать? Все в общем-то обясняется предположением, что при нормальной загрузке выполянются последовательно все загрузки перед скриптом и только потом начинают исполнятся скрипт, а при динамическом формировании контента все выполняется сразу, не дожидаясь отложенных загрузок скриптов...

Это сообщение отредактировал(а) ksnk - 26.5.2010, 16:42


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
_hunter
Дата 26.5.2010, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



Я правильно понял?

test1.html
Код

<html>
    <head>
        <script language="javascript" type="text/javascript" src="http://localhost/jscript/tiny_mce/tiny_mce_src.js"></script> 
        <script language="JavaScript">
            document.onload=function(){            
                var sl = tinymce.ScriptLoader;
                sl.add("http://localhost/jscript/test1.js");
                sl.loadQueue();
            }
        </SCRIPT>
    </head>
    <body>
    </body>
</html>

в этом случае при открытии test1.html вообще ничего не происходит -- нет ни alert'а ни ошибок в Error Console'е.

+ изменение кода test1.html -- очень сильно нежелательно...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
ksnk
Дата 26.5.2010, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 84
Всего: 386



что-то мне эта задача начинает напоминать такое  smile 

Цитата(_hunter @  26.5.2010,  16:50 Найти цитируемый пост)
в этом случае при открытии test1.html вообще ничего не происходит

Ну, значит, событие document.onload уже тикнуло...
Все равно без изменений исходника толком не починить. Можно вместо onload по таймауту проверять наличие tinimce и если не появилась - откладывать выполнение. Модифицировать скрипт можно несложными регулярками. если, конечно, файл не очень велик.



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
_hunter
Дата 26.5.2010, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: нет
Всего: 98



Погуглил. Узнал об интересном баге в FF/IE:
http://my.opera.com/hallvors/blog/2009/05/...ad-became-a-bug
Цитата

No browser (except Opera) sends load events to "document"!

заменил на window.onload -- все работает.

Но проблему это не решает...
+ возникает вопрос: если tinimce на тот момент undefined -- кто показывает alert?


Это сообщение отредактировал(а) _hunter - 26.5.2010, 19:02


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0987 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.