mirror of
https://github.com/bigskysoftware/htmx.git
synced 2026-02-14 20:16:44 +00:00
set up event symbol correctly
This commit is contained in:
parent
fd69b9c538
commit
b8cf945a5f
16
src/htmx.js
16
src/htmx.js
@ -1922,26 +1922,26 @@ return (function () {
|
||||
var kebabedEvent = makeEvent(kebabName, event.detail);
|
||||
eventResult = eventResult && elt.dispatchEvent(kebabedEvent)
|
||||
}
|
||||
eventResult = eventResult && triggerInlineHandlers(elt, kebabName);
|
||||
eventResult = eventResult && triggerInlineHandlers(elt, event, kebabName);
|
||||
withExtensions(elt, function (extension) {
|
||||
eventResult = eventResult && (extension.onEvent(eventName, event) !== false)
|
||||
});
|
||||
return eventResult;
|
||||
}
|
||||
|
||||
function triggerInlineHandlers(elt, kebabbedEvent, noBubble) {
|
||||
function triggerInlineHandlers(elt, evt, kebabbedEvent, noBubble) {
|
||||
var strippedEventName = kebabbedEvent.replace('htmx:', '').replace(":", "\\:").replace(".", "\\.");
|
||||
var hxOnAttributeNameForEvent = "hx-on-" + strippedEventName;
|
||||
var selector = "[" + hxOnAttributeNameForEvent + "]";
|
||||
if (noBubble) {
|
||||
if (matches(elt, selector)) {
|
||||
return evalAttrValue(elt, hxOnAttributeNameForEvent);
|
||||
return evalAttrValue(elt, evt, hxOnAttributeNameForEvent);
|
||||
}
|
||||
} else {
|
||||
var closestMatch = closest(elt, selector);
|
||||
while (closestMatch != null) {
|
||||
// terminate simulated bubbling if handler returns false
|
||||
if(evalAttrValue(closestMatch, hxOnAttributeNameForEvent) === false) {
|
||||
if(evalAttrValue(closestMatch, evt, hxOnAttributeNameForEvent) === false) {
|
||||
return false;
|
||||
}
|
||||
var parentOfMatch = parentElt(closestMatch);
|
||||
@ -1951,10 +1951,14 @@ return (function () {
|
||||
}
|
||||
}
|
||||
|
||||
function evalAttrValue(elt, attributeName) {
|
||||
function evalAttrValue(elt, evt, attributeName) {
|
||||
var attrValue = elt.getAttribute(attributeName);
|
||||
try {
|
||||
return eval(attrValue)
|
||||
return maybeEval(elt,
|
||||
function () {
|
||||
return Function("event", attrValue + "; return true;")(evt);
|
||||
},
|
||||
true)
|
||||
} catch(e) {
|
||||
console.error("Error evaluating " + attributeName + " on", elt, ":", e);
|
||||
}
|
||||
|
||||
@ -63,11 +63,20 @@ Autorespond: <input id="autorespond" type="checkbox" onclick="toggleAutoRespond(
|
||||
|
||||
<script>
|
||||
this.server.respondWith("GET", "/demo", 'demo response...');
|
||||
this.server.respondWith("GET", "/demo2", 'demo2 response...');
|
||||
</script>
|
||||
|
||||
<button>First</button>
|
||||
<input hx-get="/demo" hx-target="next output" hx-trigger="keyup changed" hx-on-before-request="alert('foo')"/>
|
||||
|
||||
<input hx-get="/demo"
|
||||
hx-target="next output"
|
||||
hx-trigger="keyup changed"
|
||||
hx-on-config-request="event.detail.path = '/demo2'"/>
|
||||
<output>--</output>
|
||||
|
||||
<button onclick="console.log(event)">
|
||||
Log
|
||||
</button>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user