【问题标题】:setTimeout doesn't seem to work in ChromesetTimeout 似乎在 Chrome 中不起作用
【发布时间】:2013-01-04 03:45:42
【问题描述】:

这个 setTimeout 在 Firefox 中完美运行,但在 Chrome 中,函数 timeoutTrigger 没有任何事情发生,包括警报。有什么想法吗?

var $this = $('.active-more');

function timeoutTrigger() {
    $this.closest(".container").nextAll(".container:first").find(".description:first").removeClass('hide');
    $this.closest(".container").nextAll(".container:first").find(".back:first").find("img.portfolio").remove();
    alert("is this thing on?");
}

setTimeout(function(){timeoutTrigger()},400)

【问题讨论】:

  • timeoutTrigger 中的前 2 行是否导致异常?控制台中是否有任何错误消息?代码似乎正确。
  • +1 宅男,这似乎有效jsfiddle.net/sASvm
  • this不是一个不应该用作变量的关键字吗?
  • @MrXenotype :变量是$this,而不是this
  • 在 Chrome 中,开发者工具是你的朋友——F12 或 CTRL+Shift+I。检查控制台是否有错误消息。

标签: javascript google-chrome settimeout


【解决方案1】:

将您的 setTimeout 语句转换为以下内容:setTimeout(timeoutTrigger,400); 你写的那个是你调用的函数有参数的时候。另外,您缺少分号。

【讨论】:

  • 虽然风格建议不错,但这并不能真正解决问题。
  • 另外,奇怪的是删除 () 会使 setTimeout 在 Firefox 中不起作用。
  • 正如 Bagavatu 指出的那样,setTimeout(function(){timeoutTrigger()},400) 之后缺少分号。
  • 哦,我明白你在说什么。我把 () 留在里面并在末尾添加了分号,现在它在 Firefox 和 Chrome 中都可以使用。
  • 很高兴看到它有所帮助。通常,某些类型的调试器(例如 Chrome 开发工具控制台或 Firefox 中的 Firebug 控制台)会捕获这些错误。但是如果有疑问,请检查您是否有分号。 :)
【解决方案2】:

Google 已更改影响在某些浏览器中使用 setTimeout() 的内容安全政策。请阅读:https://developer.chrome.com/extensions/contentSecurityPolicy

【讨论】:

  • 至少给你的答案增加影响。例如setTimeout(string) 不会使用默认策略执行。
猜你喜欢
  • 2021-09-30
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 2011-09-14
  • 1970-01-01
  • 2017-08-31
  • 2015-05-20
  • 1970-01-01
相关资源
最近更新 更多