我的应用会话管理会将用户重定向到用户被告知其会话超时的页面,请<a href="path/to/page.html" id="manual_link">sign in</a>
。
我正在尝试编写以下行为:
如果JavaScript 正在运行:
A)。逐步增强链接,改为提交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);
4秒延迟然后提交正在发生,但如果用户不想等待4秒钟,我似乎无法获得拦截链接。换句话说,如果用户在一秒钟之后点击链接......直到四秒钟结束才会发生任何事情。
我怀疑我需要在链接点击时杀死setTimeout,但不知道如何(我对clearTimeout的笨拙尝试是如此令人失望,我甚至没有将它们包含在the example JSFiddle中)。和/或我需要阻止a
的默认行为(尽管我认为return false
正方形)。
实现所需功能需要进行哪些修改?
答案 0 :(得分:2)
您不能像在HTML中设置onclick
属性一样设置onclick
- 您需要将其设置为函数,例如:
document.getElementById('manual_link').onclick = function() {
submit_security_redirect(); return false;
};
通过Javascript添加事件处理程序时,调用addEventListener
实际上比设置onclick
更好,但遗憾的是在IE 8及以下版本中不起作用,这是跨平台的原因之一像jQuery这样的库非常适合事件处理。
BTW,arguments.callee已弃用(请参阅Arguments.callee is deprecated - what should be used instead?)。