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

Я использую JavaScript внутри жидкого шаблона.

Мой код:

<!-- value I would use further in my javascript -->
<h1 id="product-model">{product.model}</h1>

<!-- Javascript code (in the same file) -->
<script>
   <![CDATA[
     function printProductWindow() {
       document.title = document.getElementById("product");
       window.print(); 
     } 
   ]]>
</script>

Заранее спасибо! Денис

1
Denis Milosavljevic 13 Дек 2016 в 17:30

4 ответа

Лучший ответ

Ваш идентификатор элемента неверен:

 document.title = document.getElementById("product-model");

Потому что вы определили его как id="product-model".

В качестве альтернативы, если ваш JavaScript находится в FluidTemplate, вы также можете установить значение там:

<script>
  <![CDATA[
    function printProductWindow() {
      document.title = "]]>{product.model}<![CDATA[";
      window.print(); 
    } 
  ]]>
</script>

Но позвольте мне предупредить вас: изменение названия с помощью JavaScript не является хорошей практикой.

Посмотрите на TitleTagViewHelper из расширения новостей здесь Чтобы увидеть одно решение, как это можно решить.

4
René Pflamm 13 Дек 2016 в 15:02
<script>
        function printProductWindow() {
            document.title = <f:format.raw>{product.model}<f:format.raw>;
            window.print(); 
        }
</script>

Для TYPO3 8.7.

2
Jimit Shah 28 Июл 2018 в 13:14

https://docs.typo3.org/typo3cms/ExtbaseGuide/Fluid/ThingsToKnow/JsAndInline.html

<f:format.cdata>
   <script type="text/javascript">
      var myLayout;
      $(document).ready(function() {
         myLayout = $('body').layout({
            north__size: 27,
            north__initClosed: false,
            north__initHidden: false,
            center__maskContents: true // IMPORTANT - enable iframe masking
         });
      });
   </script>
</f:format.cdata>
1
exotec 31 Июл 2018 в 09:07

Вы также можете использовать переменные жидкости в js, но в большинстве случаев вам нужно использовать форматную форму, например <f:format.htmlspecialchars>.

<script>
    <![CDATA[
        function printProductWindow() {
            document.title = '<f:format.htmlspecialchars>{product.model}</f:format.htmlspecialchars>';
            window.print(); 
        }
    ]]>
</script>
1
Dimitri L. 13 Янв 2019 в 19:30