提交隐藏的表单的延迟之后,或紧接如果点击一个链接(Submit hidden form after

2019-10-17 17:51发布

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

我试图程序以下行为:

  1. 如果JavaScript是关闭 (或以其他方式不可用),用户必须点击链接的“符号”(POHTML;没问题)。
  2. 如果JavaScript 运行

    一种)。 逐行增强的链接,而不是用“security_redirect”的ID提交隐藏的表单( 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是如此令人失望,我甚至不包括他们在该例子的jsfiddle )。 和/或我需要防止a的默认行为(虽然我想return false广场是距离)。

什么修改是必要的,以实现所需的功能?

Answer 1:

您不能设置onclick一样,在你将设置以同样的方式onclick在HTML属性-你需要将其设置为一个功能,例如:

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

当通过Javascript添加事件处理程序,调用addEventListener实际上是比制定出更好onclick ,但不幸的是在IE 8版本及以下,这是为什么像jQuery的跨平台库是伟大的事件处理的原因之一是行不通的。

顺便说一句,是arguments.callee已被弃用(参见arguments.callee的已经过时? -应该怎样来代替 )。



文章来源: Submit hidden form after a delay, or immediately if a link is clicked