Решено Сторонние js убивают работу csjs хпагесов

Тема в разделе "Lotus - Xpages", создана пользователем ty3uk, 13 май 2016.

  1. ty3uk

    ty3uk Well-Known Member

    Регистрация:
    31 мар 2008
    Сообщения:
    169
    Симпатии:
    0
    хотел порисовать схему для докуменооборота, взял библиотечку GoJS (сайт_GoJS библиотечка_go.js около 800кб). И не могу понять, толи я дурак, толи лыжи не смазал. Если на странице делать простейшую кнопку с кодом alert('hello!'); то всё работает. Но если вложить данную библиотеку, то перестаёт работать.

    вот пример Хпагеса:
    Код (HTML5):
    <?xml version="1.0" encoding="UTF-8"?>
    <xp:view xmlns:xp="http://www.ibm.com/xsp/core">
    <script type="text/javascript" src="js/go.js"></script>
    <xp:button value="Label" id="button1">
    <xp:eventHandler event="onclick" submit="false">
    <xp:this.script><![CDATA[alert("Ура!");]]></xp:this.script>
    </xp:eventHandler>
    </xp:button>
    </xp:view>
    библиотека, соотвественно лежит под WebContent\js

    Пытаюсь разобраться что и как. Дебажу страницу через браузер, и что вижу, кусок HTML страницы:
    Код (HTML5):
    <script type="text/javascript">
    function view__id1__id2_clientSide_onclick(thisEvent) {
    alert("Ура!");
    }
    XSP.addOnLoad(function() {
    XSP.attachEvent("view:_id1:_id2", "view:_id1:button1", "onclick", view__id1__id2_clientSide_onclick, false, 2);
    });
    </script>
    При этом кнопарь не работает. Поумал, подумал, и прям в консоль забил:
    XSP.attachEvent("view:_id1:_id2", "view:_id1:button1", "onclick", view__id1__id2_clientSide_onclick, false, 2);
    Потом нажимаю на кнопарь, работает!
    Получается, что не отрабатывает XSP.addOnLoad(function() {...}); причём именно при вкладывании библиотечки.
    Ктонибудь встречался с таким?
     
  2. romych2004

    romych2004 Well-Known Member

    Регистрация:
    1 апр 2013
    Сообщения:
    55
    Симпатии:
    4
    Если не поздно) Но может и кому-то другому пригодится.
    Если посмотреть библиотеку, то там снизу увидим:
    Код (Javascript):
    window && (window.module && "object" === typeof window.module && "object" === typeof window.module.exports ? window.module.exports = ca : window.define && "function" === typeof window.define && window.define.amd ? (window.go = ca, window.define(ca)) : window.go = ca);
    "undefined" !== typeof module && "object" === typeof module.exports && (module.exports = ca);
    Обратим внимание на это: window.define.amd
    Это означает, что библиотека использует AMD. Как и dojo. Обычный конфликт. Исправьте window.define.amd на window.define.amd && false и все должно работать
     
  3. ty3uk

    ty3uk Well-Known Member

    Регистрация:
    31 мар 2008
    Сообщения:
    169
    Симпатии:
    0
    заработало! :woot:
     
  4. romych2004

    romych2004 Well-Known Member

    Регистрация:
    1 апр 2013
    Сообщения:
    55
    Симпатии:
    4
    Ну, если что - спрашивайте :)
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    @romych2004 как-то кастыльно, может у библиотеки есть к-л штатный способ разрешения конфликтов для неймспейсов?
     
  6. romych2004

    romych2004 Well-Known Member

    Регистрация:
    1 апр 2013
    Сообщения:
    55
    Симпатии:
    4
    Есть решение если убрать агрегацию ресурсов, но этим только хуже сделаете
     
    #6 romych2004, 28 июн 2016
    Последнее редактирование: 28 июн 2016
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
  9. romych2004

    romych2004 Well-Known Member

    Регистрация:
    1 апр 2013
    Сообщения:
    55
    Симпатии:
    4
  10. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    поиск зависимостей и инициализация
    оно там упоминается и приводят решения (по ссылкам), в т.ч. для либ использующих require.js
     

Поделиться этой страницей