Orbeon 2018.1 не может получить доступ к объекту ORBEON из html / head / script - PullRequest
0 голосов
/ 10 сентября 2018

Начиная с Orbeon 2018.1, что-то случилось с загрузкой JavaScript-объекта ORBEON. Приведенный ниже материал работал для версий 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 имеет значение "undefined".

Я попытался переместить переменную 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"

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 11 сентября 2018

Вообще, опасно предполагать, что все загружено при достижении встроенного скрипта. Лучше отложить инициализацию JavaScript на более позднее время.

По умолчанию Orbeon Forms 2018.1 больше не включает встроенные сценарии , поэтому инициализация JavaScript откладывается. В основном это было сделано, чтобы помочь с заголовком CSP. Вы можете повторно включить встроенные сценарии с помощью свойства (см. doc ), но все же может быть лучше отложить вашу собственную инициализацию на более позднее время.

...