[英]Javascript working in HTML but not XHTML JSF
我正在开发一个使用JSF 2.1和RichFaces 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-language
和data-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.