gpt4 book ai didi

javascript - 延迟后提交隐藏表单,或者如果单击链接则立即提交

转载 作者:行者123 更新时间:2023-11-30 18:09:12 40 4
gpt4 key购买 nike

我的应用程序的 session 管理会将用户重定向到一个页面,用户被告知他们的 session 已超时,请 <a href="path/to/page.html" id="manual_link">sign in</a> .

我正在尝试编写以下行为:

  1. 如果 JavaScript 关闭(或以其他方式不可用),用户将必须单击“登录”链接(POHTML;没问题)。
  2. 如果 JavaScript 正在运行:

    一个)。逐步增强链接以提交 ID 为“security_redirect”(document.getElementById('manual_link').onclick = "javascript:submit_security_redirect(); return false;";)的隐藏表单

    b) 如果用户没有先点击链接,延迟 4 秒后自动提交表单(假设 remaining_time 为 4000):

        setTimeout(function () {
    submit_security_redirect();
    }, remaining_time);

四秒延迟然后提交正在发生,但如果用户不想等待四秒,我似乎无法获取要拦截的链接。换句话说,如果用户在一秒后点击链接……在四秒结束之前什么都不会发生。

我怀疑我需要在链接点击时终止 setTimeout,但不知道如何(我在 clearTimeout 上的笨手笨脚的尝试非常令人失望,我什至没有将它们包含在 the example JSFiddle 中)。和/或我需要防止 a的默认行为(虽然我认为 return false 消除了这一点)。

需要进行哪些修改才能实现所需的功能?

最佳答案

您不能像在 HTML 中设置 onclick 属性那样设置 onclick —— 您需要将它设置为一个函数,例如:

document.getElementById('manual_link').onclick = function() {
submit_security_redirect(); return false;
};

当通过Javascript添加事件处理程序时,调用addEventListener其实比设置onclick更好,但不幸的是在IE 8及以下版本中不起作用,这是其中之一像 jQuery 这样的跨平台库非常适合事件处理的原因。

顺便说一句,arguments.callee 已弃用(请参阅 Arguments.callee is deprecated - what should be used instead?)。

关于javascript - 延迟后提交隐藏表单,或者如果单击链接则立即提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15058562/

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