繁体   English   中英

JQuery:在定义事件侦听器之后但在触发侦听器之前删除JS

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM