gpt4 book ai didi

javascript - 保护 jQuery 函数免受外部访问

转载 作者:太空狗 更新时间:2023-10-29 13:43:17 26 4
gpt4 key购买 nike

我在一个应用程序中使用 jQuery,该应用程序注册用户点击以通过 .click() 绑定(bind)执行给定操作,我希望此功能通过用户鼠标按下可用。我的一位 friend 今天指出,可以从 Firebug(或类似的东西)中的 javascript 终端运行 $(element).click(),并实现与单击元素相同的功能——这是我想要的防止。关于如何去做的任何想法?感谢您的输入。

最佳答案

简短回答:不,你无法真正阻止它。

长答案:点击事件 等任何事件都绑定(bind)到这样的事件处理程序。这些处理程序是 functions,它们在给定事件发生时执行。因此,如果您单击一个元素,您的浏览器会检查是否有任何 事件处理程序 绑定(bind)到它,如果是,它会触发它们。如果没有,浏览器将尝试将事件冒泡父元素,再次检查是否有任何事件处理程序绑定(bind)到该类型事件……等等。

jQuerys .trigger() 方法(例如调用 .click() 时实际调用的方法)只是做同样的事情事物。它为特定事件调用绑定(bind)到特定元素的事件处理程序

编辑

可能有一些简单的方法可以软检测真正的点击,例如您可以检查事件对象中的toElement属性>。 触发 时不会设置该属性。但话又说回来,您也可以使用 .trigger() 轻松伪造它。示例:

$(document).ready(function() {
$('#invalid2').bind('click', function(e){
alert('click\nevent.target: ' + e.toElement.id);
console.log(e);
});

$('#invalid1').bind('click', function(){
$('#invalid2').trigger({
type: 'click',
toElement: {id: 'Fake'}
});
});
});​

工作示例:http://www.jsfiddle.net/v4wkv/1/

如果您只是调用 $('#invalid2').trigger('click')toElement 属性将不存在,因此会失败。但如您所见,您可以将任何东西添加到 事件对象 中。

关于javascript - 保护 jQuery 函数免受外部访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3315687/

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