Magento удаляет тег скрипта

у меня проблемы с Magento (версия Magento 1.5.1.0). Делает ли Magento некоторую фильтрацию вывода/разметки/js?

Я поместил некоторые теги скрипта в шаблон *.phtml (без блока CMS)

<script type="text/javascript">
// echo foo
function foo() {
}
</script>

Когда я смотрю на html-источник, этот тег отсутствует. Все остальные окружающие теги видны. Я проверил путь к шаблону и очистил кеш. Любые подсказки или идеи?

С уважением


person Bertie    schedule 29.08.2012    source источник
comment
Вы уверены, что редактируете правильный файл шаблона? попробуйте вывести что-то уникальное в phtml для проверки.   -  person pzirkind    schedule 29.08.2012
comment
привет, я поставил несколько отладочных элементов до и после - эти теги видны. Это был мой тест, чтобы убедиться, что это правильный шаблон - например: ‹div id=debug-1›debug-1‹/div›‹script›...‹/script›‹div id=debug-2›debug-2 ‹/div› Вывод: ‹div id=debug-1›debug-1‹/div›‹div id=debug-2›debug-2‹/div›   -  person Bertie    schedule 29.08.2012
comment
возможно, поместите внутреннее содержимое в: ‹![CDATA[   -  person pzirkind    schedule 29.08.2012
comment
привет - спасибо - попробовал - поведение не меняется. Никогда не было такой проблемы. Жутко :-) Я удалил кеш и это правильный файл шаблона.   -  person Bertie    schedule 29.08.2012
comment
да, это определенно странно, попробуйте добавить его в специальный файл js.   -  person pzirkind    schedule 29.08.2012
comment
Куда вы положили этот код? Это АЯКС? Какой контроллер и блок?   -  person ivantedja    schedule 29.08.2012
comment
Я говорю о шаблоне/checkout/onepage/review/info.phtml   -  person Bertie    schedule 31.08.2012
comment
Я переместил код JS во внешний файл, но встроенный JS был бы лучшим решением.   -  person Bertie    schedule 31.08.2012
comment
У меня такая же проблема, очень странно. Любые решения? Мне нужно добавить некоторые динамические переменные...   -  person shredding    schedule 24.07.2013
comment
С этим столкнулась через пару лет. Я добавляю разметку вокруг тега скрипта, и он отображается, а скрипт нет. Это разметка, созданная с помощью AJAX. Я подозреваю, что сторонний модуль загружает блок через AJAX, создавая/изменяя макет и отображая макет вместо простого использования $this->getResponse()->setBody($block->toHtml());   -  person pspahn    schedule 06.03.2015
comment
... и добавить, что в итоге я нашел причину внутри пользовательского метода _eval() javascript, который удаляет <script> из контента, загружаемого через AJAX. Поставщиком является MageWorx, поэтому, если вы хотите избежать подобных проблем, избегайте их продуктов.   -  person pspahn    schedule 06.03.2015
comment
Может быть связано с stackoverflow.com/questions/36922262/   -  person RSeidelsohn    schedule 16.02.2017


Ответы (3)


У меня была такая же странная проблема, когда было ясно, что кеши не задействованы и это не вызвано плагинами браузера. Для чего это стоит: javascript get выполняется, но переменные должны быть объявлены следующим образом:

// Not working
var foo = 'baz';
// Working
window.foo = 'baz';

Не спрашивайте меня, почему.

person shredding    schedule 24.07.2013

Нет, стандартная система Magento Layout/Block/phtml не выполняет никакой HTML-фильтрации и/или экранирования.

Мое первоначальное предположение заключалось в том, что вы редактируете неправильный файл шаблона phtml — может быть, вы находитесь в неправильной теме?

Вторым предположением будет то, что вы имеете дело с блоком/шаблоном, который кэшируется, поэтому ваши изменения не будут отображаться до тех пор, пока не истечет срок действия кеша или вы не очистите его вручную.

Больше контекста в вашем вопросе поможет людям найти решение.

person Alan Storm    schedule 29.08.2012
comment
Привет, это правильный шаблон, потому что моя разметка отладки до и после тега сценария видна. я очищал кеш после каждого изменения - person Bertie; 31.08.2012

Та же проблема сегодня здесь, это было вызвано расширением HF_Defer. Если у вас возникла эта проблема, будет быстрее создать папку temremove внутри app/etc/modules. Затем просто переместите все файлы из пользовательского модуля в эту папку. Затем верните его 5 на 5, чтобы увидеть, когда он начнет / перестанет работать должным образом.

person JohnyFree    schedule 06.11.2016