gpt4 book ai didi

javascript - 检测用户点击与 jquery .click()

转载 作者:行者123 更新时间:2023-11-28 02:21:31 25 4
gpt4 key购买 nike

所以我有一些<a href="..页面上的标签,它们有一个内联 onclick属性。如果用户点击其中一个并且未登录,则会提示他们登录,然后在页面刷新jquery时会触发.click()关于<a>元素将用户带到他们最初想去的地方。

由于弹出窗口拦截器问题,我做到了 if jquery 触发 .click() 的位置我在同一窗口中打开链接。

但是如果用户已经登录,我想单击链接在新选项卡中打开。这是我在 Chrome 中运行良好的代码,但 FireFox 对此很生气 - 说“事件未定义”。

 <a href="#" onclick="genericActionComplete('12345', this, 'http://www.myurl.com', false, e)


function genericActionComplete(actionId, ctl, url, markComplete, e) {
if(event.x != null){ // User Clicked - open url in new tab
window.open(url);
}

else{ // Click performed by script after logIn , open in same tab to prevent Pop-Up Blocker

window.location = url;
}
}

我尝试通过thise并尝试仅使用 event由于在 firefox 中运气不佳,我正在检查 event.x,因为如果用户用鼠标单击链接,它就会有一个值。

最佳答案

当然事件是未定义的...传递给函数的最后一个参数是事件,由函数定义中的变量e引用。

function genericActionComplete(actionId, ctl, url, markComplete, e)

但是在 HTML 中作为参数传递 e 不会传递 event 对象,该对象通常称为 event。改变

<a href="#" onclick="genericActionComplete('12345', this, 'http://www.myurl.com', false, e)">
<!-- ===================================================================================/\

<a href="#" onclick="genericActionComplete('12345', this, 'http://www.myurl.com', false, event)">
<!-- ===================================================================================/\

你应该没事。你的代码在 Chrome 上运行的原因很简单。为了尽可能兼容和宽容,chrome 确实有一个 window.event 属性,就像旧的 IE 一样。由于您的函数的第一行是错误的:

if(event.x != null){//should be e.x

JavaScript 的范围扫描将 event 解析为 window.event - 这适用于 IE 和 Chrome,不适用于 FF。
您应该可以使用所有主要浏览器,但如果您想安全起见,请在检查 e.x 之前将此行添加到函数中:

e = e || window.event || {x: null};

关于javascript - 检测用户点击与 jquery .click(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15574197/

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