【问题标题】:how can I force IE9 to "see" the most current javascript when using the debugger?使用调试器时,如何强制 IE9 “查看”最新的 javascript?
【发布时间】:2011-08-14 08:00:21
【问题描述】:

我正在使用 IE9 调试网络应用程序。加载页面后,我对 javascript 进行了一些更改。我无法让 IE9 停止使用新代码。消息是“文档中的代码未加载”。我可以在不调试时设置断点,但在我开始调试时它们将无效。我正在使用 IE7 浏览器模式,IE7 文档模式。

我尝试过的事情:

  • 关闭开发工具窗口,重新打开
  • 停止调试,开始调试
  • 开发工具窗口中的 Ctrl R(与清除浏览器缓存按钮相同)
  • IE9网页上的Ctrl R
  • 在Ie9网页上按Ctrl F5
  • 清除此域的浏览器缓存
  • 检查(设置)总是从服务器刷新缓存

接下来要尝试的事情(我猜)是完全关闭 IE。这是解决这个问题的方法吗?如果是这样,呸。我花了几分钟来设置页面,这样在每次 JS 更改之后都非常糟糕。我可以使用 FF4 开发 JS,但我看到的 JS 问题是 IE7 特有的,所以我必须这样做。

>> 如何让 IE9(以 IE7 模式运行)可靠地调试来自服务器的最新 JS?

【问题讨论】:

    标签: javascript debugging internet-explorer-9


    【解决方案1】:

    此问题与缓存等无关。IE9 在新代码中遇到脚本错误(缺少关闭括号),并且不允许在脚本中的任何位置设置断点。不过,IE 似乎对脚本错误非常安静。无论如何,修复脚本错误解决了断点/缓存的问题。

    【讨论】:

    • 缓存是我开发过程中浪费时间的第一大原因。缺少括号是紧随其后的第二个。
    【解决方案2】:

    如果您可以访问代码:
    在您的 javascript 文件引用中添加一个查询字符串,如下所示:

    <script src="Scripts/main.js?v=1" type="text/javascript"></script>
    

    而且每次你​​在 js 文件中更改时,将 v 值更改为其他值,这样浏览器会觉得这是一个新文件并会得到它。

    【讨论】:

    • 只是不要在生产中使用这种方法,因为它会混淆缓存stevesouders.com/blog/2008/08/23/…
    • 是的,但是当您希望所有网站用户都获得您在上一个版本中所做的更改时,它会很有用。
    • 嗯,在 prod 部署之前似乎很容易被遗忘。不错的主意,但我希望有一些更具体的 IE9。 FF4 似乎对此没有任何问题 >:-(
    【解决方案3】:

    添加这个:

    window.applicationCache.addEventListener('updateready', function (e)
    {
      if (window.applicationCache.status == window.applicationCache.UPDATEREADY)
      {
        window.applicationCache.swapCache();
        if (confirm('A new version of this site is available. Load it?'))
         window.location.reload();
      }
    }, false);
    

    我在网上找到了这个解决方案。对不起,我不记得作者了。当我在 Visual Studio 中使用 JavaScript 调试 Web 应用程序并使用 IE 时,它适用于我。

    【讨论】:

      【解决方案4】:

      我根据“文档中的代码未加载”错误消息找到了这个问题。我没有使用 IE7 文档模式或任何其他模式,只是 IE9。

      和 jcollum 一样,我的问题与缓存无关。

      我正在使用 MVC.Net,有人设置了一段 javascript 来依赖 ViewBag 中的字符串。我改变了一些东西,那个 ViewBag 字符串消失了,所以生成的 javascript 看起来像这样:

      if(!()) {
          // Some code
      }
      

      Javascript 就在这里死掉了,并且不会处理块中的其余代码。这很令人困惑,因为它仍在尝试在一组不同的脚本标签中执行 javascript,但它依赖于它不会加载的另一个块中设置的变量。

      所以,基本上,语法错误是通过奇怪的方式引入的,调试器拒绝加载后面的一些代码。另一个关于 ViewBag 危险的教训。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-23
        相关资源
        最近更新 更多