Orbeon 2018.1无法从html / head / script访问ORBEON对象

问题描述 投票:0回答:1

从Orbeon 2018.1开始,ORBEON javascript对象的加载方式发生了变化。以下内容曾用于2017.2.2和3.9版本。

目标:我想使用适当的语言加载TinyMCE小部件。为此,我曾经有这样的代码:

<xh:script type="text/javascript">
    var lang = ORBEON.xforms.Document.getValue('language') ? ORBEON.xforms.Document.getValue('language').split('-')[0] : 'en';
    var TINYMCE_CUSTOM_CONFIG = {
        language:                  lang,
        ...

这个html / head代码在版本2018.1中失败,因为ORBEON对象是“未定义的”。

我尝试将变量lang移动到我的模型,如下所示:

<xf:instance id="language">
    <language/>
</xf:instance>
<xf:action ev:observer="language" ev:event="xxforms-value-changed">
    <xxf:script>
        var lang = ORBEON.xforms.Document.getValue('language') ? ORBEON.xforms.Document.getValue('language').split('-')[0] : 'en';

        TINYMCE_CUSTOM_CONFIG.language = lang;
    </xxf:script>
</xf:action>

但现在代码失败了,因为它说“java.lang.IllegalArgumentException:找不到id language的控件”

我在这里错过了什么?

orbeon xforms
1个回答
1
投票

通常,假设在到达内联脚本时已加载所有内容是危险的。最好将JavaScript初始化推迟到以后的时间。

默认情况下,Orbeon Forms 2018.1 no longer includes inline scripts因此延迟了JavaScript初始化。这主要是为了帮助CSP标题。您可以使用该属性重新启用内联脚本(请参阅doc),但将您自己的初始化推迟到以后可能仍然会更好。

© www.soinside.com 2019 - 2024. All rights reserved.