Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Почему могут не работать относительные ссылки на внешний JavaScript? (http://forum.typo3.ru/showthread.php?t=4398)

Winston James 31.08.2007 23:37

Почему могут не работать относительные ссылки на внешний JavaScript?
 
В классе class.t3lib_querygenerator.php есть такой фрагмент:

if ($this->extJSCODE) {
$out.='<script language="javascript" type="text/javascript" src="'.$GLOBALS['BACK_PATH'].'../t3lib/jsfunc.evalfield.js"></script>

<script language="javascript" type="text/javascript" src="'.$GLOBALS['BACK_PATH'].'jsfunc.tbe_editor.js"></script>

<script language="javascript" type="text/javascript">'.$this->extJSCODE.'</script>';
return $out;
}

Для проверки работоспособности (там не все в порядке) я нашпиговал соответствующие скрипты alertами и установил, что эти файлы фактически не подключаются.

Я переставил скрипты в местную директорию (там, где сидит активный модуль) и убрал соответствующие префиксы перед названиями файлов.

В этом варианте происходит обращение к скриптам, алерты выпрыгивают, где надо, и можно нормально искать ошибки.

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

Может быть кто-то уже сталкивался с подобной непоняткой?

void 01.09.2007 12:46

Они подключаются, в режиме бекенда. Проверено. Вместо алертов - используйте лучше расширение firebug для файрфокса и брейкпоинты в нем.

Winston James 01.09.2007 21:34

Вызов внешних скриптов через относительные пути
 
Так речь и идет о бэкенде (sorry, что сразу не написал)!

Именно в бэкенде расширения Direct Mail я пытаюсь сделать специальную выборку (special query). Так вроде бы не было никаких проблем, но вот захотелось мне проверять поля с датой (напр. Старт и Стоп - чтобы загодя отсылать мэйлы с предупреждениями). Так вот: изменения даты у меня не воспринимаются.

Стал я копать глубже и докопался, что это-то и должно происходить в подключаемых внешних скриптах (только для полей сконфигурированных в TCA как date - в остальных случаях эти файлы не подключаются - видимо поэтому никто и не обращает на них внимания).

Когда я, как уже писал выше, перенес эти файлы непосредственно в директорию ..\mod\ этого расширения и убрал пути из приведенного выше фрагмента, мне удалось попасть "внутрь" скриптов и найти причину странной обработки даты. Там, в скрипте должно происходить изменение скрытого числового поля формы в соответствие с введенной в видимом поле датой. Но для обращения к полям формы необходимо обращаться к форме по имени, а про имя-то как раз и забыли: обращения происходит к пустому месту: [][ИмяПоля][Значение]. Естественно - ничего не выходит.

Короче, я ошибку в исходниках устранил (может быть и не очень элегантно, но все заработало), но когда я возвратился к оригинальному варианту вызова внешних скриптов, то все осталось по-прежнему: их как бы не существует с точки зрения модуля, как будто бы их и не вызывали!

Причина врядли кроется в синтаксисе приведенного фрагмента. Я проверял: пути типа ../../../../typo3 вычисляютя верно. Но что же тогда? Никак не въеду - наверное я тупой...

За наводку на firebug - спасибо, обязательно попробую.

Winston James 02.09.2007 01:37

Я, кажется, понял...
 
Сегодня включил комп, стартанул мой Typo3, вышел на старое место, и - о чудо! - все заработало! Уже тысячи раз происходило со мной подобное, и происходит каждый день с миллионами других, а все не перестаю удивляться...

Я тогда снова делаю незначительное изменение в скрипте - и оно опять не акцептируется. Что за чертовщина, думаю.

Немного почесав затылок, решил установить рекомендованый коллегой firebug. Гениальная, кстати, штука - рекомендую всем, и еще раз большое спасибо наводчику :-) Но самое главное, после этого было акцептировано мое последнее изменение!

И тут меня осенило: JS-code запоминается, скорее всего, в каком-то особом кэше браузера. Я давеча по инерции думал, что чищу все: и оба кэша от Typo3 , и браузер перезапускал - ничего не помогало. Теперь, кажется, понял, что сидит эта гадость где-то в укромном месте, и при определенных обстоятельставх очищается (напр. при перезапуске компа или, вероятно, при инсталяции новых расширений браузера).

Если моя гипотеза верна, то тогда мой последний вопрос к уважаемому сообществу:

Каким образом можно вручную очищать этот браузер-кэш в наиболее популярных браузерах (IE, Mozilla FIrefox etc.)?


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

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot