• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Решено Сторонние 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() {...}); причём именно при вкладывании библиотечки.
Ктонибудь встречался с таким?
 
R

romych2004

Если не поздно) Но может и кому-то другому пригодится.
Если посмотреть библиотеку, то там снизу увидим:
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 и все должно работать
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
@romych2004 как-то кастыльно, может у библиотеки есть к-л штатный способ разрешения конфликтов для неймспейсов?
 
R

romych2004

@romych2004 как-то кастыльно, может у библиотеки есть к-л штатный способ разрешения конфликтов для неймспейсов?
Есть решение если убрать агрегацию ресурсов, но этим только хуже сделаете
 
Последнее редактирование модератором:

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
может ?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
или
 
R

romych2004

или
В первом случае отключается AMD у dojo(на сколько я понял), чем хуже сделаете
По второй ссылке не очень понял при чем здесь dojo

Тогда уж и вот еще:
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 940
609
BIT
210
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!