• 🚨 24 часа до повышения цены на курс «Пентест Active Directory: от теории к практике» от Академии Кодебай

    🔍 Изучите реальные техники атак на инфраструктуру Active Directory: от первоначального доступа до полной компрометации.
    🛠️ Освойте инструменты, такие как BloodHound, Mimikatz, CrackMapExec и другие.
    🧪 Пройдите практические лабораторные работы, имитирующие реальные сценарии атак.
    🧠 Получите знания, которые помогут вам стать востребованным специалистом в области информационной безопасности.

    Последний день записи в текущий поток по старой цене Подробнее о курсе ...

Решено Сторонние 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