gpt4 book ai didi

javascript - 限制调用 JavaScript 函数以内联 DOM 元素的事件处理程序

转载 作者:搜寻专家 更新时间:2023-10-31 08:54:17 25 4
gpt4 key购买 nike

是否有任何方法或变通方法可以使(如果您愿意,但不一定是全局的)函数仅可用于 DOM 元素的内联事件处理程序?

JavaScript

function forInlineCallsOnly() {
// only callable from inline "on" attributes of DOM elements
};

也就是说,上面的函数应该不能从脚本的其他部分调用,只能从,例如:

HTML

<a onclick="forInlineCallsOnly();">Click me</a>

这可以使用堆栈跟踪吗?


注意:这不是有关应在何处定义事件处理程序的最佳实践的问题。

最佳答案

我能给出的最佳答案;哎呀,这不是很好。

<a data-onclick-attach="forInlineCallsOnly">

JS

eventMethodsMap: {
forInlineCallsOnly: function() {
...
}
}
Array.prototype.forEach.call(document.querySelectorAll('[data-onclick-attach]'), function(elem) {
elem.onclick = eventMethodsMap[elem.dataset.onclickAttach];
});

Dojo 之类的系统大致就是这样做的;事件可以在 HTML 中定义为数据属性,但它们以更自定义的方式连接。如果您不想特定于 onclick,您可以想出一个更好的查询选择器。

编辑:您可能还想从 onClickAttach 属性中删除括号,以防人们开始以与 onclick 相同的方式对待它。

关于javascript - 限制调用 JavaScript 函数以内联 DOM 元素的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30397851/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com