【问题标题】:Window.settimeout failing when using firefox 27.0.1使用 firefox 27.0.1 时 Window.settimeout 失败
【发布时间】:2014-02-20 21:41:57
【问题描述】:

我收到此错误:“TypeError:Window.setTimeout 的参数 1 不是对象。”使用下面的代码。它在其他浏览器和早期版本的 Firefox 中运行良好。有什么想法吗?

<SCRIPT LANGUAGE=JAVASCRIPT>
window.setTimeout("Advance()", 0, "JAVASCRIPT");
function Advance()
{
location.replace('iWelcome');
}
</SCRIPT>

谢谢 克莱姆

【问题讨论】:

  • “JAVASCRIPT”能为您做什么?
  • 为什么是 lotus-notes 标签?有什么关系?
  • 实际上是表单中的页面重定向。根据单击链接的人是否是客户,将显示特定页面。函数其实是:function Advance() { location.replace(''); } 并且“计算值”是 "@If( @Contains( @UserRoles; "Customer" ); "cWelcome"; "iWelcome" )"

标签: javascript lotus-notes


【解决方案1】:

不确定他们为什么要进行更改,但现在当您将额外的参数传递给setTimeout 时,如果您为第一个参数提供了字符串而不是函数,它将引发错误。

这是有道理的,因为除非他们尝试解析字符串,否则他们无法将"JAVASCRIPT" 传递给"Advance()"。


要修复它,要么删除 "JAVASCRIPT" 参数(因为你没有使用它):

setTimeout("Advance()", 0);

或者传递一个函数,这在任何情况下都是一个更好的主意。

setTimeout(function(x) {
    Advance(x);
}, 0, "JAVASCRIPT");

或者我猜你可以直接将"JAVASCRIPT" 编码到调用中,如果你确实在使用它,并坚持传递一个字符串。

setTimeout("Advance(\"JAVASCRIPT\")", 0);

【讨论】:

  • 谢谢。这就是它的全部——“JAVASCRIPT”论点。我从某个地方抓取了这段代码,并且已经使用了多年,现在它刚刚坏了。我被错误消息抛出:“argument 1”是问题所在,它说。谢谢! :-)
猜你喜欢
  • 2017-10-09
  • 1970-01-01
  • 2013-03-04
  • 2014-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-30
相关资源
最近更新 更多