Safari JavaScript调试器始终为空

时间:2010-05-21 12:14:38

标签: javascript debugging safari

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

可能有一个因素是我嵌套函数并将匿名函数分配给变量(道格拉斯克罗克福德)。还有其他人有这个问题吗?有没有人有解决方案?

[编辑]我刚注意到,当文件从远程服务器上下来时,它显示正常。但是,我的主要逻辑文件是从虚拟主机上的本地LAMP堆栈中删除而且它们都是空白的。最后,他们最终会出现。也许这是Apache的事情?

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

当拉下JS文件时,根据curl,我的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

...我的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

Apache似乎正在做的一切正确!我将此作为Safari错误提交,但它似乎只发生在我的本地服务器上。

1 个答案:

答案 0 :(得分:2)

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

我认为这只是我当地环境的一个问题,但现在我已经开始测试了很多网站,这是一个问题。我从未注意到,因为我没有在其他网站上同时尝试资源跟踪和调试。这必须是调试窗口的问题,因为这对浏览器窗口中的脚本执行完全没有影响;实际上,即使是调试器也可以跟踪断点和代码步进,它只是无法显示您正在逐步执行的代码。这个问题没有出现在Chrome中,所以我猜这是一个仅限Safari的问题而不是更广泛的webkit问题。

我会尝试将此发布到Apple的错误跟踪器。