• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

  • Автор темы Автор темы ty3uk
  • Дата начала Дата начала
T

ty3uk

хотел порисовать схему для докуменооборота, взял библиотечку GoJS ( около 800кб). И не могу понять, толи я дурак, толи лыжи не смазал. Если на странице делать простейшую кнопку с кодом alert('hello!'); то всё работает. Но если вложить данную библиотеку, то перестаёт работать.

вот пример Хпагеса:
HTML:
<?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 страницы:
HTML:
<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() {...}); причём именно при вкладывании библиотечки.
Ктонибудь встречался с таким?
 
Если не поздно) Но может и кому-то другому пригодится.
Если посмотреть библиотеку, то там снизу увидим:
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 и все должно работать
 
@romych2004 как-то кастыльно, может у библиотеки есть к-л штатный способ разрешения конфликтов для неймспейсов?
 
@romych2004 как-то кастыльно, может у библиотеки есть к-л штатный способ разрешения конфликтов для неймспейсов?
Есть решение если убрать агрегацию ресурсов, но этим только хуже сделаете
 
Последнее редактирование модератором:
может ?
 
или
 
или
В первом случае отключается AMD у dojo(на сколько я понял), чем хуже сделаете
По второй ссылке не очень понял при чем здесь dojo

Тогда уж и вот еще:
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Курс AD