Динамически загружаемый тег <script>не используется в браузерах WebKit - PullRequest
0 голосов
/ 14 июля 2010

Кажется, это известная проблема, и она уже несколько раз задавалась здесь, в SO, однако я не вижу ничего специфического для jQTouch, поэтому я подумал, что попробую.

jQT будет динамически загружать страницыкогда ссылка нажата.На этой странице я хотел бы добавить что-то вроде

<script>
$.include('javascriptfile.js', function() {alert('do something with results of this file to an already existing div element');};
</script>

. $ .Include - это плагин jquery, который, как я обнаружил, имитирует $ .load с добавлением еще нескольких смартов.Протестировано для работы на FF, но не в Chrome или, что наиболее важно, Safari.

Предупреждение никогда не отображается.FireBug никогда не показывает JavaScript, даже будучи загруженным.Если я поставлю предупреждение перед $ .include, я все равно ничего не вижу.

Я попробовал событие onclick / ontap, которое затем запустило бы этот код, который был включен в тег head, не повезло.

Редактировать: я использую ревизию r148 в jQT.Я думаю, это работало до перехода на эту версию.

Ответы [ 2 ]

0 голосов
/ 21 июля 2010

Хорошо, Гриз, я ценю вашу помощь, но в конечном итоге ответ потребовал решительного переосмысления того, как я использовал JQTouch. Решение состояло в том, чтобы переместить все в событие onclick и сделать все ссылки hrefs на #. Это может быть то, что вы говорили о Герис.

В функции onclick я выполняю логику, предварительную загрузку, загрузку страницы через собственный GET через jquery, затем использую открытый объект jQT.goTo (div, transition). Похоже, это позволяет обойти ошибки WebKit или что-то, с чем я столкнулся, и теперь это связано с FireFox, Chrome, Safari, iPhone и многими другими.

У меня действительно есть несколько проблем с анимацией в JQT, но я думаю, что это известные проблемы, над которыми, я надеюсь, работают Старк и банда из JQTouch.

0 голосов
/ 15 июля 2010

Вы пытались добавить файл javascript одним из следующих двух способов:

Статический путь:

<script type="text/javascript">

function staticLoadScript(url){
   document.write('<script src="', url, '" type="text/JavaScript"><\/script>');
}

staticLoadScript("javascriptfile.js");
modifyDivFn(processFnInFile());

</script>

Динамический способ:

<script type="text/javascript">

function dhtmlLoadScript(url){
   var e = document.createElement("script");
   e.src = url;
   e.type="text/javascript";
   document.getElementsByTagName("head")[0].appendChild(e);
}

onload = function(){
   dhtmlLoadScript("javascriptfile.js");
   modifyDivFn(processFnInFile());
}

</script>

После включения вы можете вызвать функцию, которая выполняет необходимую обработку (то есть processFnInFile ()), результат которой будет передан в modifyDivFn (и измените нужный вам div.) Вы можете сделать это в одной функции, просто чтобы проиллюстрировать идею.


Источник: Динамическая загрузка файлов Javascript

...