我在一段javascript中遇到以下错误(在Firefox 3.5中,运行Firebug)
cannot access optimized closure
Run Code Online (Sandbox Code Playgroud)
我知道,表面上看,是什么导致了这个错误.我有一条线
options.length()
Run Code Online (Sandbox Code Playgroud)
代替
options.length
Run Code Online (Sandbox Code Playgroud)
修复此错误,使消息消失.但我很好奇.这是什么意思?什么是优化的闭包?是否优化了javascript解释器自动执行的操作?它有什么作用?
从屏幕截图中可以看出,大部分时间都在等待服务器响应(即紫色区域).
服务器响应时间到底是什么时候?服务器太慢了吗?我的联系太慢了吗?服务器不能一次处理很多信息(我在那里有很多文件,我知道我会将它们合并到更少的文件中)?我该怎么办才能减少等待时间?
PS.所有数据都在同一台服务器上,但我正在使用子域,以便浏览器可以一次处理更多文件.

我在调试Ajax调用中返回的代码时遇到了一些问题 - 特别是在json中返回的函数(错误不会在Firefox中被捕获) - 直到我开始在Internet Explorer中调试这些问题(我认为它是一个与firefox相关的问题,因为Venkman也没有检测到这些错误.你知道从Ajax调用中调试json返回的代码的任何方法吗?
编辑03/04/2009 15:05
感谢所有人的回复,但我认为我没有很好地解释自己.我已经足够了解Firebug进行基本调试,但是当我在Ajax调用中获取一些有问题的代码时,我的问题就出现了.假设我们有以下HTML文件(您需要在同一文件夹中使用原型才能使其正常工作):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<script type="text/javascript" src="prototype.js"></script>
</head>
<body>
<script>
function ajaxErrorTest()
{
new Ajax.Request('data.json', {
'method': 'get',
'onSuccess': function(data){
if(data.responseJSON.func)
data.responseJSON.func();}});
}
</script>
<input type="button" value="test" onclick="ajaxErrorTest();" />
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
然后,data.json文件的内容是这样的:
{'func':function(){console.log('loaded...');alert('hey');}}
Run Code Online (Sandbox Code Playgroud)
如果您在浏览器中加载页面并单击"测试"按钮(一切顺利),您将在控制台中获得一些内容,并在警告框中显示"嘿".现在将data.json文件更改为:
{'func':function(){console.log('loaded...');alerts('hey');}}
Run Code Online (Sandbox Code Playgroud)
...再次单击"测试"按钮(无需重新加载页面;-)您获得控制台线,但没有警报框......并且没有错误!这是我试图调试的那种错误.
我看到了与跨域相关的小ajax问题.
在localmachine上我用一些ajax创建了html示例:在注册文本字段中用户类型'username',在每次击键时ajax将它发送到本地Tomcat,其中servlet检查该用户名是否已被使用并发送'take'响应.
在localhost上没问题.只要我输入'username',servlet就会发送'take'响应,浏览器会显示它.
但是,当我在远程机器(在远程网络上有一些免费托管)上放置带有ajax的测试html页面时,我会在我的localhost Tomcat上发送验证请求,建立连接,在Tomcat控制台中我看到请求即将发生,并且在Mozzila中的firebug中这是控制台输出继电器:
GET http://89.216.182.25:8080/Dinamicki1/UsernameServlet?username=zik 200 OK
Run Code Online (Sandbox Code Playgroud)
...但是在响应选项卡中没有'采取'servlet响应,并且firebug中的消息是红色的
所以服务器通信良好,没有防火墙问题,响应是200 OK
但响应体是空的.
任何想法萤火虫的这些红色信息是什么?
非常感谢你提前.
如果有人可以为java推荐一些严肃的ajax教程,将非常感谢:)
我有一些Firebug控制台函数调用,我想在Firebug未启用时禁用,例如未定义控制台.这适用于IE6和FF3,但不适用于Chrome:
var log;
if(console){
log = console.log;
}else{
log = function(){ return; }
}
Run Code Online (Sandbox Code Playgroud)
我在Chrome中收到"未捕获的TypeError:非法调用"= /
我在这里读到了这个问题,你必须应用一个上下文,这对我来说是一种新的...我似乎无法想象如何在所有浏览器中完成上述操作......
我有这个功能从输入字段切换禁用属性:
$('.someElement').click(function(){
if (someCondition) {
console.log($target.prev('input')) // gives out the right object
$target.toggleClass('open').prev('input').attr('disabled', 'disabled');
}else{
$target.toggleClass('open').prev('input').removeAttr('disabled'); //this works
}
})
Run Code Online (Sandbox Code Playgroud)
该removeAttr工作正常,但是当我需要添加禁用再次它根本不值一提.我的console.log被触发(并返回正确的输入字段),所以我确信我的if语句有效.但是当我在firefox中使用firebug检查DOM时,不会显示disabled属性.
有人能帮我吗?
PS:请不要专注于函数或if语句本身,只是那个对于残疾人不起作用的attr工作正常...
编辑:它的输入类型="隐藏"是否可能禁用对隐藏字段不起作用?
我正在为我的js和css文件使用压缩库.但是根据yslow,它生成的文件不是gzip,但它应该是.所以我想自己验证,但我不知道如何.
我如何在firefox或firebug中执行此操作?
我有以下按钮:
<input type="submit" id="btnLogin" onclick="return ValidateLogin();" value="Enter">
Run Code Online (Sandbox Code Playgroud)
如何使用firebug找到ValidateLogin()函数的定义?
我正在努力让FireBug Lite与IE7一起工作.鉴于此代码(没有别的):
<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"></script>
<link rel="stylesheet" href="../../css/third-party/jquery.ui.all.css">
This is a test!
Run Code Online (Sandbox Code Playgroud)
...我在Line:8180收到错误,'this.messageQueue为null或者不是对象',并且控制台没有出现.
如果我删除CSS文件引用,它工作正常.此外,这个CSS可以在FF和GC下使用FireBug.
CSS文件是最近从jQ的网站下载的,并且包含8,000行(在扩展所有@imports之后),我的Web服务器可访问的任何代码也都不包含令牌'messageQueue'.
我没有任何IE插件(我知道)并且从未在这台PC上使用过任何类型的MSMQ产品.
我也尝试过随机的事情,比如切换语句的顺序,加载jQuery的常规.js文件,使用FireBug书签等等,都无济于事.
有什么建议?
我正在使用Firebug来调试javascript.即使没有设置断点,它仍会在很多地方打破.所以,我发现自己在调试器停止的jQuery库中大约有30个位置.
我可能不小心将一些设置设置为值,以使其执行此操作.它不是黄色暂停按钮.
有没有人认识到这种症状.我怎样才能回到高效地调试javascript,以便它只在我设置的断点处停止?
firebug ×10
javascript ×4
ajax ×2
firefox ×2
alias ×1
closures ×1
cross-domain ×1
css ×1
function ×1
java ×1
jquery ×1
json ×1
optimization ×1