如何通过Themes在XPage全局设置HTML标签禁用谷歌翻译?
问题
需要在Chrome中禁用XPage的谷歌翻译,目标是给HTML根标签添加translate="no"属性(即<html translate="no">)。
直接在每个XPage中添加以下代码可实现需求,但逐个页面操作效率太低:
<xp:this.attrs> <xp:attr name="translate" value="no"></xp:attr> </xp:this.attrs>
尝试通过全局引用的自定义控件实现时,会生成<div translate="no">,无法作用到<html>标签,达不到预期效果。
又尝试通过全局加载的Themes设计元素配置,使用了两种方式均未生效(已确认主题已加载):
- 方式一:
<control> <name>ViewRoot</name> <property> <name>attrs</name> <complex type="xp_attr"> <property> <name>name</name> <value>translate</value> </property> <property> <name>value</name> <value>no</value> </property> </complex> </property> </control>
- 方式二:
<control> <name>ViewRoot</name> <property> <name>translate</name> <value>no</value> </property> </control>
请问上述配置哪里出错了?
解决方案
问题出在主题配置的语法上,正确的配置需要使用<add>标签向ViewRoot的attrs集合中添加属性项,而非直接覆盖或设置不存在的属性:
<control> <name>ViewRoot</name> <property> <name>attrs</name> <add> <complex type="xp_attr"> <property> <name>name</name> <value>translate</value> </property> <property> <name>value</name> <value>no</value> </property> </complex> </add> </property> </control>
原因说明
- 方式一的问题:
attrs是ViewRoot的集合类型属性(List<Attr>),直接用<complex>设置会覆盖整个集合,而非添加新属性。必须用<add>标签向集合中追加元素,才能保留原有属性的同时添加translate="no"。 - 方式二的问题:
ViewRoot控件本身没有名为translate的原生属性,无法直接通过主题设置该属性。所有HTML标签属性都需要通过attrs集合来添加。
额外验证
确保数据库已正确应用该主题:
- 打开数据库的XPage Properties,在Theme选项中选择自定义主题;
- 或在
xsp.properties文件中配置xsp.theme=你的主题名称。
内容的提问来源于stack exchange,提问作者Malin
相关产品推荐
相关产品推荐

