【问题标题】:Javascript only works after opening developer tools in chromeJavascript 仅在 chrome 中打开开发人员工具后才有效
【发布时间】:2015-11-02 06:39:46
【问题描述】:

我遇到了和这里一样的问题:

Why does JavaScript only work after opening developer tools in IE once?

除了我的是 chrome 44。

JavaScript 代码 - 主要是 XHR 和 setInterval - 完美运行 - 当开发人员工具打开时

(可能只是 XHR 问题)

这是一个网络应用程序 - 即:一个弹出窗口,宽度为 300 像素,位于用户当前正在处理的任何内容旁边。

这里的解决方案: AJAX works if chrome dev tools open but not if chrome web tools closed?

似乎不适用 - 因为我正在使用 post 处理动态文件

有什么想法:-)?

编辑: 正如@michaelAdam 所启发的那样-大多数问题都是缓存问题,因为我使用了很多XHR“获取”(未缓存) 嗯..有趣的是: 使用:

$.ajaxSetup({ cache: false });

似乎没有成功。 添加: @Mattisdada:

header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");//Dont cache
header("Pragma: no-cache");//Dont cache
header("Expires: Thu, 19 Nov 1981 08:52:00 GMT");//Make sure it expired in the past (this can be overkill)

Prevent Chrome from caching AJAX requests

似乎确实成功了 - 到目前为止...

【问题讨论】:

  • 您的旧代码是否会被缓存,并且您在设置中选中了“禁用缓存(DevTools 打开时)”?
  • 你真的应该用“工作”来定义你曾经做过什么,并准确地解释什么是行不通的。它应该做什么?它目前在做什么?
  • 似乎onload 问题。如果您在控制台中遇到任何错误,并且您觉得某些代码 sn-ps 不起作用?
  • @NamiNam 很好地提出问题的方式,获得答案的可能性很小,但是如果您可以发布您的代码,那么我们可能会找出发生了什么xhr 来电。
  • @NamiNam michaelAdam 建议中的 (在 DevTools 打开时) 部分很重要。可能存在仅在缓存时出现的竞争条件。或许可以尝试在开发者工具中关闭该选项,看看是否还能重现它?

标签: javascript jquery ajax google-chrome-devtools


【解决方案1】:

您需要为 jQuery AJAX 设置cache: false,这样响应数据就不会被缓存在浏览器中。另一个技巧也是(如果有人不使用 jQuery)通过发送一些唯一值作为参数(如 new Date().getTime())

例子:

$.ajax({
    url: 'http://someurl', 
    cache: false, 

【讨论】:

    猜你喜欢
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 2013-01-26
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多