Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   TypoScript практикум (http://forum.typo3.ru/forumdisplay.php?f=27)
-   -   Динамическая замена тега Body (http://forum.typo3.ru/showthread.php?t=8013)

javaPro 27.09.2009 18:23

Динамическая замена тега Body
 
Доброго времени суток!
У меня появилась надобность в динамической замене тега <body>.

К примеру на одной странице мне нужно что-бы тег был такой:
Код:

<body onload="function(1)">
А на другой странице что-бы был такой:
Код:

<body onload="function2(123)">
Как такое можно сделать через BE?

Зарание спасибо за помощь!

void 27.09.2009 20:59

Не используйте onload="", используйте обработчик события DOMContentLoaded, как это делают любые js-фреймворки типа jQuery/mooTools/ExtJS.

Соответственно, задача сводится к вставке разного джаваскрипта на разных страницах. Что решается как-то так
[globalVar = TSFE:id = 15]
page.includeJS.something = /path/to/one.js
[else]
page.includeJS.something = /path/to/another.js
[end]

javaPro 28.09.2009 02:59

Цитата:

Сообщение от void (Сообщение 25708)
Не используйте onload="", используйте обработчик события DOMContentLoaded, как это делают любые js-фреймворки типа jQuery/mooTools/ExtJS.

Соответственно, задача сводится к вставке разного джаваскрипта на разных страницах. Что решается как-то так
[globalVar = TSFE:id = 15]
page.includeJS.something = /path/to/one.js
[else]
page.includeJS.something = /path/to/another.js
[end]

Спасибо за совет! Попробую!
А можно как-то это все прописывать в свойствах самой страници (в TSconfig), а не в шаблоне?

Вопрос другой (для общего знания): почему не использовать onload="" ?

void 29.09.2009 23:05

Вот если честно, то по-моему нельзя. pageTSconfig он немного для других вещей: настройки RTE там, например. С другой стороны, page TS config - это обычное текстовое поле в таблице pages, то есть может быть им можно воспользоваться, если ваш кастомный код какими-то маркерами пометить и через какой-нибудь парсер на userFunc прогнать.
Но мне кажется, что овчинка не стоит выделки, и лучше либо воспользоваться полем Media для указания используемых файлов, либо написать своё расширение и в нём добавить поле в pages. Или найти ещё какой-нибудь вариант (например, определять текущее местонахождение прямо из javascript-а и прописывать условия в нём).

Относительно onload есть два соображения.
Во-первых, onload вызывается сильно позже domcontentloaded, что не есть хорошо - ваши скрипты в общем случае должны отрабатывать как можно раньше. Во-вторых, писать javascript прямо в HTML не есть хорошо по идеологическим соображениям - смешивать структуру (HTML) и поведение (javascript). Все эти <a onclick="" или <body onload="" должны навешиваться самим javascript-ом


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

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