[英]JQuery: Remove JS after defining event listener but before listener is triggered
我有一个问题,搜索实际上没有产生任何结果。 如果过去有人问过这个问题,我深表歉意。
我正在尝试定义一个事件侦听器,并在定义事件侦听器后立即删除JS。 问题是,我希望在事件发生之前进行移除。 这可能吗? 我在 JQuery 1.4 文档中读到detach()
就像 remove,但维护 JQuery 数据。 这是一个可行的解决方案吗? 删除在事件发生之前放置事件侦听器的代码是否有缺点?
我试图删除的代码是动态生成的代码。 做这样的事情:
<script id="12341234">
$( function() {
$('#test').click( function() {
alert('Hello');
});
});
</script>
稍后在脚本中:
$('#12341234').remove();
这适用于删除脚本,它只是不会触发事件侦听器(这是有道理的)。
我尝试这样做的原因是为了增加很少的安全性。 敏感字段已经被屏蔽,没有人可以访问任何敏感的内容。 我只是让 PHP 生成了相当数量的 JS,我不想要“检查元素”的诱惑。 如果他们真的看到了,那也没什么大不了的。 如果可能的话,我只是希望将其删除。
任何帮助深表感谢。 先感谢您。
如果有人想知道,我想出了答案。
它的功能就像我的理论一样:它删除了脚本标签和中间的所有内容,但事件侦听器保持不变。 请参阅以下示例:
<script id="testscript">
$( function() {
$('#testbutton').click( function() {
alert('Hello!');
});
});
$('#testscript').detach();
</script>
这将保留您的事件侦听器,同时防止您的 JS 显示在检查中。
快速说明,如果有人使用任何可以逐步渲染的调试工具,他们可以在代码被删除之前轻松查看代码。 但是,如果您只是不想让普通用户看到 JS,这将起作用。
敏感数据仍需要屏蔽或适当处理。
我仍然不知道关于detach()
是否有负面影响的问题的答案,或者对于这个用例是否应该避免它。 但是,我做了一些测试,它与remove()
相比似乎没有太大的性能影响。 我们说的是慢 1% 或更少。 我还通过文档挖掘了更多内容,并重申了我最初的信念,即我的用例基本上是detach()
的标准用例。 使用它似乎没有任何缺点。 我可能错了,如果是这样,请随时纠正我。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.