代码之家  ›  专栏  ›  技术社区  ›  Andrew

Safari JavaScript调试器始终为空

  •  0
  • Andrew  · 技术社区  · 16 年前

    这是我在Windows和Mac上遇到的一个问题,已经有好几个月了,这让我发疯了。每当我插入“debugger”指令或在Safari脚本控制台中设置断点时,超过一半的时间代码在应该的地方中断,但代码视图是空的;一些JS文件也是空的,但不是全部。控制台告诉我所处的行,并正确显示调用堆栈,另外我还可以单步执行代码。我就是看不到剧本。我尝试刷新我的缓存,禁用缓存,修改JS文件(可能是因为当时编译了代码)。似乎没有什么帮助。我知道如果我刷新了足够的调试器(右键单击并“重新加载”),最终我会看到我的脚本。但这是一个耗时的过程。我会使用不同的浏览器,但在这种情况下我实际上需要使用Safari。

    有一件事可能是一个因素,那就是我嵌套函数,并将匿名函数赋给变量(laDouglasCrockford)。其他人有这个问题吗?有人有解决办法吗?

    [编辑]我刚注意到,当文件从远程服务器发出时,它显示得很好。不过,我的主要逻辑文件是从虚拟主机的本地灯堆栈中出来的,它们都是空白的。再次,他们最终会出现。也许这是阿帕奇的东西?

    [编辑]这似乎与其他地方写的问题有关:例如 "Resource interpreted as other but transferred with MIME type application/javascript" . 问题是我已经检查了我的HTTP头, <meta> 标签和我的 <script> 标记以确保mime类型一致。

    根据curl的说法,当下拉JS文件时,我的HTTP头是:

    < HTTP/1.1 200 OK
    < Date: Fri, 21 May 2010 13:04:42 GMT
    < Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8l DAV/2 PHP/5.3.1
    < Last-Modified: Fri, 21 May 2010 08:48:15 GMT
    < ETag: "dda3a6-2214-48716c07891c0"
    < Accept-Ranges: bytes
    < Content-Length: 8724
    < Cache-Control: no-cache
    < Content-Type: application/x-javascript
    

    …my index.html的头部有:

    <meta http-equiv="content-script-type" content="application/x-javascript">
    

    …我这样调用JS文件:

    <script type="application/x-javascript" src="Application.js"></script>
    

    我在Safari的资源窗口中看到的警告是:

    Resource interpreted as other but transferred with MIME type application/x-javascript
    

    阿帕奇似乎做得很好!我将把它作为一个Safari bug提交,但它似乎只在我的本地服务器上发生。

    1 回复  |  直到 11 年前
        1
  •  1
  •   Andrew    16 年前

    我认为我已经隔离了这个问题,解决方法很简单:如果您需要调试,请关闭Safari中的“资源”选项卡;如果您需要跟踪资源,请不要期望能够调试,因为通常您无法进行调试。

    我认为这只是我的本地环境的一个问题,但这是一个问题,我现在已经在许多站点看到了,因为我已经开始测试;我从来没有注意到,因为我没有尝试在其他站点上同时进行资源跟踪和调试。这一定是调试窗口的问题,因为这绝对不会影响浏览器窗口中的脚本执行;事实上,即使是调试器也可以跟踪断点和代码步进,它只是无法向您显示正在步进的代码。这个问题不会出现在Chrome中,所以我猜这只是一个Safari特有的问题,而不是一个更广泛的WebKit问题。

    我会把这个贴到苹果的bug追踪器上。