繁体   English   中英

Javascript 工作在 HTML 但不是 XHTML JSF

[英]Javascript working in HTML but not XHTML JSF

我正在开发一个使用JSF 2.1RichFaces 3.3的网络应用程序

我有一个外部的 Javascript 需要在所有应用程序的页面上运行,所以我把它放在我的模板文件的头部,称之为layout.xhtml

这被所有不同的页面用作模板,所以我想我至少把它放在了正确的位置。
<ui:composition template="/templates/layout.xhtml">

脚本本身没问题,在 JSFiddle 上对其进行了测试,并按预期运行。

它的格式是这样的:

<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" 
        data-document-language="true" 
        type="text/javascript" 
        charset="UTF-8" 
        data-domain-script="dummy-value-for-stack-overflow">
</script>

在应用程序中进行测试时,我能够让脚本在正常的.html页面上正常运行,但是当我更改为使用.xhtml页面时,我在浏览器的控制台中出现错误:

Uncaught (in promise) TypeError: e.Groups.forEach is not a function
    at Ct.setPublicDomainData (otBannerSdk.js:7)
    at Ct.<anonymous> (otBannerSdk.js:7)
    at otBannerSdk.js:7
    at Object.next (otBannerSdk.js:7)
    at otBannerSdk.js:7
    at new Promise (<anonymous>)
    at c (otBannerSdk.js:7)
    at Ct.initializeBannerVariables (otBannerSdk.js:7)
    at otBannerSdk.js:7
    at otBannerSdk.js:7

我认为这是由于 script 标签、 data-document-languagedata-domain-script中的数据属性,因为它们在我正在使用的任何命名空间中都不是有效属性,而 XHTML 对那种事物:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich"
    lang="en-US">

我在想的是 XHTML 不喜欢那些数据属性,所以脚本试图在没有它们的情况下运行,控制台错误是由 null 值引起的。

有没有办法解决? 我知道 JSF 2.2+ 允许一些自定义属性选项,但我不确定它们是否专门应用于script标签

这是我第一次在 JSF 项目上工作,如果我遗漏了任何东西,我深表歉意,谢谢。

事实证明,当 RichFaces 将一些脚本注入 html 文件的head时,发生了某种冲突,并且似乎导致我试图添加的脚本出现一些奇怪的行为。

一种解决方法是对我的web.xml进行小幅更改,将 RichFaces LoadScriptStrategy值从ALL更改为DEFAULT

    <context-param>
        <param-name>org.richfaces.LoadScriptStrategy</param-name>
        <param-value>DEFAULT</param-value>
    </context-param>

NONE也对我有用,但建议根据他们的文档避免使用: https://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/ArchitectureOverview.html#ScriptsandStylesLoadStrategy (摆脱所有这些脚本将可能会导致其他东西损坏)

感谢@Kukeltje 的评论,他试图澄清我的问题——如果没有,我什至不会认为 RichFaces 是罪魁祸首,我确信这是 xhtml 和标签的问题(不是)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM