0 Пользователей и 1 Гость просматривают эту тему.
  • 22 Ответов
  • 1032 Просмотров
*

Iamopk

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Всем доброго времени суток.
Пишу небольшой модуль и столкнулся с проблемой как передать php переменную из объекта $params в подгружаемый JS файл(jFactory::getDocument()->addScript) чтобы потом в этом JS файле продолжить нужные мне манипуляции..
Заранее всем низкий поклон!
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Код: php
$var = $params->get('param');
$doc = JFactory::getDocument();
$doc->addScriptDeclaration("var myModuleVar = '$var'; ");
$doc->addScript("/script.js");
*

fsv

  • Живу я здесь
  • 2765
  • 402 / 2
_script вроде как после _scripts формируется. Возможно, скрипт не увидит эту переменную, т.к. она будет после него. Не уверен, посмотреть надо…

Можете формировать весь текст скрипта в php, потом добавлять его через addScriptDeclaration. Но так инлайн-скрипт будет. Если сайт не оптимизировали от них, то без разницы, одним меньше/больше.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
_script вроде как после _scripts формируется

Ну так для этого есть DOMContentLoaded:

Код: php
JQuery(document).ready(function() {
    console.log(myModuleVar);
});
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
а мне больше нравится передача через data-*
тем более что сейчас модно стало инлайн блокировать через Content Security Policy...
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Цитировать
а мне больше нравится передача через data-*
Ежели это простая переменная - да. А если длиннющий объект с вложенными массивами?

Цитировать
тем более что сейчас модно стало инлайн блокировать через Content Security Policy...
Ни разу не встречал. По-моему, это глупо.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
А если длиннющий объект с вложенными массивами?
имхо из $params обычно не бывает длиннющего объекта с вложенными массивами, которые надо передать в javascript :)

По-моему, это глупо.
это не глупо. это здоровье сайта
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Цитировать
имхо из $params обычно не бывает длиннющего объекта с вложенными массивами, которые надо передать в javascript Azn
Смотря что за расширение.

Цитировать
это не глупо. это здоровье сайта
Какой смысл блокировать собственные скрипты? Настройте эту политику так, чтобы она не занималась всякой дребеденью!
*

Iamopk

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
Всем большое спасибо!
а мне больше нравится передача через data-*
тем более что сейчас модно стало инлайн блокировать через Content Security Policy...
А как это через data-* ? Хотелось бы знать все возможные варианты!
*

fsv

  • Живу я здесь
  • 2765
  • 402 / 2
Какой смысл блокировать собственные скрипты? Настройте эту политику так, чтобы она не занималась всякой дребеденью!
Кто сказал, что собственные блокирует? Их либо не создают, избавляясь от инлайн-скриптов, либо nonce генерируют. Можно еще все инлайн разрешить, но тогда смысла в CSP мало. Сами сказали, что не сталкивались, но сразу в спор...

Цитировать
а мне больше нравится передача через data-*
в данном случае, исходя из первичной информации, оптимально
В глобальную область видимости переменные пихать не хорошо.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
В споре рождается истина. Я писал, что не сталкивался с тем, что кто-то блокирует собственные скрипты. Пихать переменные, как вы выразились, в глобальную область видимости - это классический способ, который никогда не подведёт. Сделайте глобальный объект и наполняйте его чем хотите.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Какой смысл блокировать собственные скрипты?
блокируются скрипты, которые встроены (вирусами, рекламой и т.д.) на страницу в браузере конечного пользователя. ради этого и включают в Content Security Policy блокировку инлайн. но конечно это тянет за собой и переделку собственных скриптов, ибо Content Security Policy абсолютно все равно, кто инлайн добавил, и легальный он или нет :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
А как это через data-* ? Хотелось бы знать все возможные варианты!
http://htmlbook.ru/blog/atribut-data
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
так по ссылке вроде есть
Спойлер
[свернуть]

или что имелось в виду под реализацией?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Iamopk

  • Осваиваюсь на форуме
  • 10
  • 0 / 0
*

fsv

  • Живу я здесь
  • 2765
  • 402 / 2
Пихать переменные, как вы выразились, в глобальную область видимости - это классический способ, который никогда не подведёт.
Это ***код. Именно потому, что он подведет.
Не хотел так сразу писать, вынудили.
Не воспринимайте все так болезненно и лично. Вы правильно заметили, обсуждение способствует личному росту. В том числе и моему.) Я и у вас кое-чему учусь, это нормально.)

upd. А я написал не так. Автозамена работает.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Это ***код. Именно потому, что он подведет.

Спасибо на добром слове, однако вы выдернули мою фразу из контекста, а полный смысл был таков:

Цитировать
Сделайте глобальный объект и наполняйте его чем хотите.
*

fsv

  • Живу я здесь
  • 2765
  • 402 / 2
однако вы выдернули мою фразу из контекста
Вернулся, перечитал. Вы правы, извиняюсь. Пропустил сразу мимо "ушей". Сам так делаю: 1 "свой" объект, и играюсь с ним как хочу. Это при условии, что нельзя ограничить область видимости немедленно вызываемой функцией. Такое редко бывает. Так что даже и 1 объект в глобальную стараюсь не "пихать".
Просто вы не первый раз очень постепенно приходите к "идеалу", подавая это так, как будто сразу именно это и написали. А я мыслями все как-то на первоначальных вариантах. Постараюсь быть внимательнее.)
« Последнее редактирование: 17.02.2016, 00:51:53 от fsv »
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Кстати, по поводу микрошаблонизации, я лично предпочитаю работать с text/template, хотя этот способ также устарел, как и data-* шаблонизация. Сегодня уже придумали массу других библиотек.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
это в смысле
Код
<script type="text/html">
?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Код: javascript
<script type="text/template-javascript">
    var str = "Hello World!";
</script>
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
а, ну да, смысл тот же. игнорируемый javascript
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Убрать из модуля новостей ссылку на статью, на которой выводится модуль

Автор zeus07

Ответов: 3
Просмотров: 708
Последний ответ 08.11.2023, 21:17:26
от GrayAn
Изменение отображения модуля от разрешения экрана

Автор mag_num83

Ответов: 5
Просмотров: 512
Последний ответ 17.05.2023, 09:35:23
от Театрал
Как удалить позицию модуля в настройках модуля?

Автор 62411

Ответов: 6
Просмотров: 404
Последний ответ 12.03.2023, 18:24:38
от 62411
Как в конце модуля mod_articles_news вывести ссылку на страницу с блогом?

Автор androv77

Ответов: 4
Просмотров: 399
Последний ответ 20.09.2022, 11:20:29
от androv77
Вывести переменную шаблона в материал

Автор Little Muk

Ответов: 8
Просмотров: 2251
Последний ответ 08.05.2022, 15:02:46
от Black-kot