当前位置: 首页 > 知识库问答 >
问题:

为什么TYPO3 CMS 9.5中CDATA包装的内联Javascript为空?

申屠秦斩
2023-03-14

我们已经为TYPO3创建了第三方扩展。升级到9.5之后,我们现在得到一个PHP警告:为[…]中的foreach()提供的参数无效/类型3_src-9.5。9/供应商/Typo3流体/fluid/src/Core/Parser/TemplateProcessor/NamespaceDetectionTemplateProcessor。php第180行

经过一些web研究,我们发现问题在于内联Javascript,您只能通过使用正确的CDATA包装来解决(更多:https://forge.typo3.org/issues/88615)

所以我们已经试过了(根据manuel的说法)https://docs.typo3.org/m/typo3/guide-extbasefluid/master/en-us/Fluid/ThingsToKnow/JsAndInline.html):

<script>
    <![CDATA[
        (function($){
            alert('test');
        })(jQuery);
    ]]>
</script>

但现在,CDATA包装之间的所有内容都在前端返回中完全消失。如果我们也将脚本标记放在CDATA之间。

这也不起作用:

<f:format.cdata>
   <script type="text/javascript">
      (function($){
        alert('test');
      })(jQuery);
   </script>
</f:format.cdata>

共有2个答案

仉刚洁
2023-03-14

更新至TYPO3 CMS 9.5。10 LTS解决了我们所有的问题。

夏烨霖
2023-03-14

尝试以下任一方法:

<script type="text/javascript">
   <f:format.cdata>
      (function($){
        alert('test');
      })(jQuery);
   </f:format.cdata>
</script>

<f:format.raw>
   <script type="text/javascript">
      (function($){
        alert('test');
      })(jQuery);
   </script>
</f:format.raw>
 类似资料:
  • 我是否遗漏了包装类中的某些细节? 我有以下程序,在其中我定义了一个类,它包装并提供运算符: 我以为这会编译成同样的东西--它在做同样的计算,所有的东西都是内联的。 编辑-如果我使用而不是,它将产生相同的输出。 编辑-我发布了错误的ASM版本(而不是),因此本节没有帮助。 我在我的Mac电脑上使用Xcode的gcc,在一个64位系统上。除了for-loop的主体之外,结果是相同的。

  • 问题内容: JavaScript标记和HTML中CDATA的用途是什么? 问题答案: XML文档中的所有文本都将由解析器解析。 但是解析器将忽略CDATA节中的文本。 CDATA-(未分析)字符数据 术语CDATA用于XML解析器不应该解析的文本数据。 XML元素中的字符“ <”和“&”是非法的。 “ <”将产生错误,因为解析器将其解释为新元素的开始。 “&”将产生错误,因为解析器将其解释为字符实

  • 问题内容: 我知道包装器类是什么,它们将原始类型(例如int,double等)包装到各自类的对象中。 但是,为什么我们首先需要包装器类?为什么不简单地在我们拥有原始类型的地方使用它们呢? 问题答案: 几种可能的原因: 这样就可以有一个空值 包含在集合中 将一般/多态与其他对象一起视为对象

  • 问题内容: 在较高的层次上,我知道我们需要通过使用它们各自的包装类在Java集合中使用它们来“包装”原始数据类型,例如int和char。我想了解Java集合如何在低级询问:“为什么我们需要将原始数据类型包装为对象才能在集合中使用它们?”在此先感谢您的帮助。 问题答案: 在虚拟机级别,这是因为与引用类型(例如java.lang.Object及其派生类型)相比,原始类型在内存中的表示方式非常不同。例如

  • 问题内容: 我正在尝试制作多个具有相同高度的正方形行(每行3个)。 我为此编写了一些HTML和CSS,但所有框都在同一行上。 这是我到目前为止的内容: 当我用此页面加载页面时,所有框都出现了,但是它们都在一行上,超过了父div的100%宽度。 任何帮助深表感谢。 问题答案: flex容器的初始设置为 。 这意味着,当您创建一个伸缩容器(通过应用元素或将其应用于元素)时,所有子元素(“伸缩项”)都限

  • 问题内容: 我有一个expressjs应用程序,在特定的路由上,我调用了一个函数,该函数通过使用数据库文档作为参数来响应数据库中的用户。我使用基于promise的库,并且想在将数据库文档放入响应中的回调内联。但是当我这样做时程序会失败。有人可以解释为什么吗?我还想知道为什么内联调用才能真正起作用。两种方法和之间有一些根本区别吗? 这是一个有效和无效的示例。假定返回用户文档的承诺。 问题答案: 像这