我有一个问题,搜索实际上没有产生任何结果。如果过去有人问我,我道歉。
我正在尝试定义一个事件监听器,并在定义事件监听器后立即删除JS。问题是,我希望在事件发生之前进行删除。这可能吗?我在JQuery 1.4文档中读到了detach()
就像删除,但维护了JQuery数据。这是一个可行的解决方案?删除在事件发生之前放置事件监听器的代码是否有缺点?
我想要删除的代码是动态生成的代码。做这样的事情:
<script id="12341234">
$( function() {
$('#test').click( function() {
alert('Hello');
});
});
</script>
稍后在剧本中:
$('#12341234').remove();
这适用于删除脚本,它只是不会触发事件监听器(这是有意义的)。
我尝试这样做的原因是为了增加安全性。敏感字段已被屏蔽,没有人可以访问任何敏感的本身。我只是让PHP生成了相当数量的JS,我不想要“检查元素”的诱惑。如果他们确实看到了它,那不是什么大不了的事。我希望尽可能删除它。
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:0)
如果有人想知道,我想出了答案。
它的功能与我理论化的一样:它删除了脚本标记及其间的所有内容,但事件监听器保持不变。见下面的例子:
<script id="testscript">
$( function() {
$('#testbutton').click( function() {
alert('Hello!');
});
});
$('#testscript').detach();
</script>
这将保留您的事件监听器,同时防止您的JS在检查时显示。
快速说明,如果有人使用任何可以逐步渲染的调试工具,他们可以在删除代码之前轻松查看代码。但是,如果您只是不希望普通用户看到JS,那么这将有效。
敏感数据仍需要屏蔽或妥善处理。
我仍然不知道问题的答案是detach()
是否会产生负面影响,或者是否应该避免这个用例。但是,我做了一些测试,与remove()
相比,它似乎没有太大的性能影响。我们说的慢1%或更慢。我还通过文档挖了一些,并重申我最初认为我的用例基本上是detach()
的标准用例。使用它似乎没有任何不利之处。我可能错了,如果有的话随时纠正我。