Entries

笔记:一些脚本相关功能在不同浏览器之间的琐碎区别(更)

IE: 加载较大的脚本文件时UI可能会变得反应迟缓,用XHR的时候好像状况会稍微改善一点。
FF: 无论用script标记还是用XHR加载文件,UI都不受影响。值得注意的是,如果用script标记载入的外部文件根本就不是javascript(似乎从第一行开始判断),FF会干脆忽略它。
Chrome(WebKit): 速度是最快的,但在整个文档的所有元素被分析之前好像不会显示出任何内容。需要注意的是,如果脚本中有严重错误的话,好像时间复杂度接近于O(脚本文件的大小)。
Opera: 对脚本提供一些额外的有意思的支持,比方说载如外部脚本的script对象的text会返回载入脚本文件的内容。但值得注意的是,对于较大的脚本文件处理是非常缓慢的!并且很吃内存!
顺便提一下,Opera允许content样式直接应用于非伪元素/对象。

我在之前的一篇中提到过AJAX的早期形态,AJAX早期形态就是在一个frame中定时加载脚本互相操作——这种形式现在还被用在一些老牌Rich Web应用中,比方说killbar。
AJAX明确形成一种设计方式之后,衍生了一些问题,最常见的就是跨站访问和“实时”更新这两个问题……而事实上,用插入script元素和“推”技术可以很容易解决这种问题——这些本来都是旧技术,只看会不会用——就像我所牢骚的那样,有些人总是需要别人明确地说明才能知道如何解决问题。



IE使用的JScript(不是JavaScript噢)引擎因为某些“奇怪”的原因被使用在了浏览器以外的地方,比方说ASP(别告诉我你不知道ASP可以用JScript写)、WSH以及作为“操作系统的一部分”提供API供给其它程序使用——Windows上所有使用了JScript的应用本质上都是JScript宿主程序,WMP和腾讯QQ(不过QQ皮肤大都使用VBScript)都是如此……还有一个很优秀的东西叫NetBox(可惜现在已经停止开发了),在苛刻的条件下可以用来学习ASP。

所以……微软有借口懒惰对待JScript引擎开发了……所以JScript引擎是目前几种常见浏览器中对JavaScript(ECMAScript)实现最为特别的一款……

比方说,"this is a string"[3]应该返回“s”,但在JScript引擎中却不行,会返回undefined……所以要兼容IE的话,必须使用charAt方法。

FireFox使用SeaMonkey套件为其JavaScript实现提供了toSource方法,这就让JSON实现起来稍微简单了一些,但可惜的是,在其它常见浏览器上都找不到toSource方法,需要脚本编写者自己去实现。

关于正则表达式的使用,JScript也额外提供了一些成员,而IE以外的几种常见浏览器实现都差不多——因此我们写网页脚本的时候通常不使用这些额外的成员。
比方说我注意到的就是/RegExp/i.exec("a regexp test")这个操作,在JScript中返回的数组会具有lastIndex属性,而IE以外的浏览器不在这里提供这个属性……因此为了兼容性,我们通常用正则表达式对象本身的lastIndex属性。

附带说明一下:JavaScriptAJAX开发中存在一些陷阱,我会龟速整理并帖出来……
引用此文章(FC2博客用户)
http://shinron4.blog126.fc2blog.us/tb.php/14-3982f83f

引用

留言

发表留言

发表留言
只对管理员显示

Appendix

自我介绍

优雅的神棍 / Elegant Tales

Author:优雅的神棍 / Elegant Tales
神棍你好,神棍再见。

最新引用

QR

QR

羔羊们啊

加为好友

和此人成爲好友

搜寻栏