js中函数预解析在Firefox下的异常表现

前几天同事发现的一个诡异现象,猜猜浏览器执行下面这段代码会弹出什么提示?

if(1){
    f(1);
    function f(a){
        alert(a);
    }
}

通常情况下,都认为javascript中function会被预解析,所以这里应该会弹出一个对话框,显示字符“1”。没错,在IE6-IE9,Chrome,Safari,Opera等待浏览器下也都是这个结果。但是偏偏Firefox有点特立独行,会提示“引用错误,f未定义”。

我们再试试,把if去掉,只留两个花括号看看:

{
    f(1);
    function f(a){
        alert(a);
    }
}

还是一样!现在我们在试试几种情况:

if(1){
    function f(a){
        alert(a);
    }
    f(1);
}

这个没有问题,正常显示1,再试试这个:

if(1){
    function f(a){
        alert(a);
    }
}
f(1);

也没有问题,再试试这个:

if(0){
    function f(a){
        alert(a);

解决头疼的Firefox对SWF的缓存问题

Firefox速度快,可惜就是爱缓存,即使你在HTTP请求头部里面设置了no-cache,或者你在本地调试,Firefox都会毫不在意地一如既往地缓存你的swf,即使你设置了你的缓存空间大小为0还是一样。(IE也差不多,不过貌似有时候Ctrl+F5还是有用的)。

在Firefox下是可以这样解决的:

  • 打开一个新的标签页(TAB)
  • 在地址栏输入about:config
  • 同意它的警告提示,就是答应它你会小心的(I’ll be careful, I promise!)
  • 在过滤器(filter)里输入browser.cache.disk.enable,选中那一行结果,改变其值为false

这样子就不会缓存任何东西了,要想让缓存功能生效,记得改回来就是了~…

变脸Firefox,假装IE

由于看到这篇文章(Vista 下 Firefox 的细节美化),于是就做了下尝试,结果继续深入,就做了件比较无聊的事情,把Firefox的外观改造得和IE就几乎一样了。你只习惯Vista下IE 7的界面吗?Firefox也可以做到!

下面这个是Firefox:

下面这个是IE 7:

在这里我多用了一个皮肤——Vista Areo(点击这里打开下载页面)。另外,那片美化Firefox的文章中提到的“Compact Menu”插件是不需要的。…

原来Chrome支持::selection样式表设置

这个是用来设置被选择文字的背景色和文字颜色(就是文字高亮时的样子),例如:

Chrome支持::selection,Firefox是支持::-moz-selection,IE就啥都不支持了,不过这两个样式要分开写,像这样:

::selection{
    color:#f0d000;
    background-color:#0f581a;
}
::-moz-selection{
    color:#f0d000;
    background-color:#0f581a;
}

同时用两个浏览器的烦恼

Google浏览器Chrome和Firefox 3都比较喜欢用,经常是随便点一个,打开就用。于是我经常忘记自己用的是哪个浏览器,因为我很少输入网址,基本上都是靠链接一页一页地翻。看网页的时候很少有使用键盘的时候,于是麻烦跟着来了,因为我喜欢用右键菜单(我实在是很害怕网页在本窗口中打开,除非我确认当前页再也没有我感兴趣的链接了),而Chrome和Firefox在右键菜单上两个项目的先后位置有一点点差别,于是我一不小心就点错了,我点菜单的时候不会去看上面写的什么字,而是依靠我印象中的位置:

Firefox和Chrome都提供了在新标签(Open in New Tab)和新窗口(Open in New Window)中打开的功能,在Firefox中,它把在新标签中打开放在了第二个,而Chrome则放在了第一个,但是,在对于支持多Tab浏览器来说,Open in New Tab是不是用得更多一些呢?

IE也是把“Open …

Firefox 3与IE 8 Beta 2


顺便说一句那天我在办公室里说过的话:刚装系统的时候,我是用IE去浏览Firefox的网站,去下载Firefox,装好Firefox以后,现在却用Firefox去浏览Microsoft的网站去下载IE 8……

前几天Firefox自动弹出提示提示我安装Firefox 3,既然已经是正式版了,而且印象中反响也不错,那就装吧,于是就直接更新了。

IE 8 Beta 2也出来几天了,貌似相对Beta 1来说改进了许多,不会再乱得一塌糊涂,也不会动不动就脚本错误了,而且听说这次中文版出来得异常的早,和以往的风格不太一样,不知道是不是真的开始重视中国市场了还是因为告了番茄花园而对中国正版市场信心倍增?不管怎么样,我还是把IE也一并更新了,升级到了IE8。

两个新版本都不错,都没有让我太失望,相对来说我依然觉得Firefox更好更人性化一些,前进后退和刷新停止按钮我更习惯一点。另外,我太喜欢Firefox的地址输入栏了,输入网址和网页标题都很爽:太清晰明了了!贴图如下:…

Firefox下和IE下的单击和双击事件差异

如果在一个DOM对象上同时绑定单击(click)和双击(dblclick)事件,当在这个DOM对象上发生双击事件时,在IE下和在Firefox下将出现不一样的现象:
在IE下,第一次点击(click)会触发一次单击(click)事件,第二次点击(连续的)将会触发双击(dblclick)事件,并不触发单击事件(click);
在FF下,第一次点击(click)会触发一次单击(click)事件,第二次点击(连续的)也会触发双击(dblclick)事件,与在IE下不同的是,这次还是会触发单击(click)事件。

当需要在DOM上同时绑定单击和双击事件时,只有自己写代码实现了:

第一次点击记录下点击的时间,并设置单击事件的Timeout(250ms比较合适),第二次点击时判断此时点击的时间与上次点击的时间间隔,如果小于指定的事件间隔(比如250ms),则判断为双击事件,并clear已设置的Timeout(避免触发单击事件)。…

Firefox新版内存泄漏可达1.57G

看看这张图:

看来Firefox真的是不可以更新到2.0.0.7,Firefox除了“对腾讯的TM官方网站有意见”以外,居然会如此吞噬我的内存,最后弄得我的可用内存只有几十兆了……我的2G内存从来就没有用到这种境地,即使同时开几个VS 2005和VS 2008,不得不佩服Firefox的厉害了……

附注:
关于Firefox对腾讯TM官网有意见是指用Firefox 2.0.0.7版访问http://tm.qq.com时会显示首页的HTML源代码,而不是跳转到http://im.qq.com/tm/,貌似是Firefox 2.0.0.7的bug,但是http://tm.qq.com的页面

你都用什么Firefox插件、扩展

响应一下aw的此文,对FF还是很感冒的,一直都用这个,呵呵

先说一句废话:在Firefox 2.0里面,貌似不分什么扩展(Extensions)和插件(Add-ons)了,而是统一叫附加软件了。

Dom Inspector

貌似是FF2.0自带的,不是我装的,可以用来查看当前网页的DOM结构,我不太习惯用这个。上次在白云上和以个师兄讨论怎么从一个网页中找出MP3的地址,那位师兄是用这个掘出来的,我还是最原始的分析源代码,一层一层掘出来的。

Gmail Manager

这个东东看名字就知道了,不过我觉得叫Gmail Notifier更合适。用FF浏览网页的时候能够自动帮你检查Gmail邮箱,及时告知邮箱里是否有新邮件。

IE Tab
说实话,我现在越来越不喜欢这个插件了。首先是切换的时候以及切换以后往往会消耗大量的系统资源,其次是我觉得有些页面的显示和IE的显示效果还是有一点点差别的。
[#afdream.com#]…

[转]技巧:让你的Firefox极速狂飙

文章转自:http://www.firefox.hk/1047.html

Firefox超速绝密方法:

第一步,在URL栏输入“about:config”, 将打开一个参数的命令行清单,这就是我们以下进行编辑的第一步

第二步,在下面的清单中找到“network.http.pipelining” 然后双击network.http.pipelining将其值改成“true” 下面我们要做的就是找到“network.http.pipelining.maxrequests”并把它的值改的高一些,如果你改成30,意思就是要求它每次发送30个请求。

第三步就是在Firefox任何一个地方点右键,选择“新建”—“整数”在弹出的对话框中输入“nglayout.initialpaint.delay”并将其值改为“0”,表示当浏览器收到网站回复的信息后能够快速的反应。

完全关闭FireFox后退出,再重新打开FireFox,你将会有不一样的速度体验,会有2—3倍的速度提升,有兴趣的朋友可以实验一下。…