探秘IE8 JavaScript功能超乎想象

    IE 7在CSS编程方面的改进给很多开发者带来了耳目一新的感觉,但是在java script方面的表现却不敢恭维,实际上,在这方面我们看到的只是一些新的BUG。不过幸运是,微软已经看到了这一点,在IE 8中,java script已经成为其开发的一个重点,下面我们就一起从开发者角度来看一下IE 8的一些特点。

    W3C:querySelector

    IE8开始支持一些新的W3C规格,其中多了querySelector和querySelectorAll两个函数。querySelector是CSS selector的查找原理的一种快速实现方法。IE 8是第二个实现Selectors API的浏览器(另一个浏览器是WebKit)。

    简单来说,它实现的就是jQuery里令人惊艳的CSS Selector功能。例如以下的范例:(只有IE8可以跑,FF、IE7都会发生错误)

 
 
01 <html>
02 <body>
03 <div><div>
04 <span>InnerSpan</span>
05 </div></div>
06 <div>
07 <span class="myClass">ClassSpan</span></div>
08 <script type="text/java script">    alert(document.querySelector("div div span").innerHTML);    alert(document.querySelector("span.myClass").innerHTML);</script>
09 </body>
10 </html>

    这儿需要特别指出的是,任何Selectors要完全依靠浏览器的原生selector实现。IE8支持CSS2.1,因此开发者无需再等待CSS 3 selectors的推出。

支持更多HTML 5功能

    我一直希望在IE 8中增加一些HTML 5兼容功能,在IE 8中我们看到了4个在这方面的完整功能,非常棒!

    1、HTML 5: window.location.hash

    这个功能已经被多数浏览器支持的非常好。在IE8标准模式中将window.location.hash中的更改作为导航,并保存先前文档的URL,可以像在Ajax应用中模仿“后退”按钮效果。IE8中对它进行了改良,可以广播这个hashchanged时间,据我所知这是第一个采取这种处理方法的浏览器。

    2、HTML 5: DOM存储

    通过这个功能,数据可以持续保存在本地,它将取代原始的cookie存储机制。我们已经在2.0版本以后的Firefox浏览器中看到过这个功能,但是在Opera和Safari中尚未支持此功能。

    3、HTML 5: postMessage

    IE8现在支持跨文件消息通讯(Cross-Document Messaging-XDM)!通过onmessage事件和postMessage方法,两个来自不同域的网页可以进行通讯。
    目前IE 8、Opera 9、Firefox 3和WebKit nightlies版均支持这个功能,也就是说,该功能几乎已被所有最新浏览器支持。

    4、HTML 5: Offline Events
在IE 8中拥有一些离线事件来检测网络的中断,通过它我们可以编写精彩的离线Ajax应用。目前来看支持这一功能的浏览器包括Firefox 3和IE 8。

IE8引入XDomainRequest跨站数据获取功能

    这是一个非常有趣的进行跨站数据获取的功能,不过它与Firefox 3中的跨站 XMLHttpRequest的工作原理不太一样。它的跨域并不是无限制的。需要服务端返回http header中带有XDomainRequestAllowed=1才可以跨域,否则是不成功的。

    XMLRequest 不能跨站一直都是多子域服务器的硬伤。使得很多情况不得不考虑最原始的动态script和JSON的方式。不过IE8团队有意解决跨站访问数据的问题,这是IE8的一个进步。

    另外,IE8下的XMLHttpRequest增加了一个很重要的属性 timeout和ontimeout方法,它在对程序进行优化时极其重要。

DOM漏洞修补

    在IE 8中getAttribute/setAttribute已经进行了重大改进。简单来说,它们现在已经可以完成属于自己的任务,IE8和和其它浏览器在这方面的差距已经不大。臭名昭著的accessing relative/absolute href/src属性问题也已经得到解决,这是一个很大的进步。另外它们还增加了hasAttribute功能。

    其它新增和修复包括:
•    .ownerElement和.ownerDocument。我们现在终于有了一个统一的方法来处理子框架。
•    getElementById可以通过id来返回对象。这是一个我们期盼已久的功能。
•    getAttribute("checked") 现在返回“checked”而不是true。
•    动态创建(或修改)的单选按钮现在可以被选择了。

    对于这些修复我感到即高兴又生气,高兴的是微软终于对它们做出了正确的修改,生气的则是微软花了这么长时间才做出正确的修改。

W3C:事件

    这个功能是IE 8目前版本完全缺失的一个部分。我们依然需要继续使用IE的attachEvent系统,还看不到addEventListener的到来。我不确认这个功能的缺失对于IE 8的Acid3支持将带来多大的影响,不过在Acid3中已经包含了对addEventListener的测试,因此微软可能已经开始考虑增加对它的支持。

    从某种程度上我可以理解微软希望保留自己现有API的心情,但是我不能理解它们为什么没有兴趣也增加对addEventListener的支持。我猜测理由可能是微软不得不支持像事件捕获之类的概念。

    对于这一点我感到非常失望。我认为这是下一个版本中急需修正的一个地方。

java script语言

    在完善垃圾收集、内存管理和性能等问题上,IE团队已经进行了一些重大的改进,这些改进对我们很多应用的开发都意义重大。

    尽管如此,我还是要纠正一点。尽管IE 8对于java script开发者来说是非常伟大的一个浏览器,但如果更准确的说,高兴的或许只是“java script+DOM”开发者。单就java script来说,IE 8却比较令人失望:在这个版本的浏览器中并没有出现任何新的纯正java script功能。我只能寄望于在下一个版本中增加更多的改进了。

ARIA支持

    这是一个让我感到非常满意的变化。ARIA是一个非常了不起的规范,可以让Web应用有能力与读者进行清晰的交流。在此之前IE缺乏对它的支持,不过现在这一缺陷已经在IE 8中得到弥补。目前Firefox、IE和Opera已经都支持ARIA。WebKit团队似乎还没有兴趣支持这一功能,实在是令人感到不可理解。

嵌入式SVG

    目前在IE 8已经增加了对嵌入式命名元素的支持。这意味着你可以对SVG和Methyl进行内联标记,从这一点上来看,IE浏览器将来有望增加对SVG的原生支持。

IE Web Developer:IE版的Firebug

    在IE浏览器中我们终于看到了这个类似Firebug的工具,用Firebug创建者Joe Hewitt的原话来说:“我非常高兴微软在IE8中完全复制了Firebug的功能。”我不得不承认,类似的工具已经存在了很长时间,而且深受开发者欢迎。

    IE Web Developer可以让你检查和编辑你的HTML DOM,显示错误信息、日志信息,显示网站源代码,监视DHTML事件和HTTP流量。

浏览模式切换

    乍一看,由于这个功能的存在,你可以看一下你的IE 7网页是否能在IE 8中显示,实际上它的真正用途在于,开发者可以开发一个标准兼容的网页(IE8、Firefox、Safari和Opera),然后查看在IE 7中的显示效果。对于开发者来说,这是一个非常有用的功能,因为我们无需再借助于虚拟机中的其它版本IE浏览器来测试网页效果。

Bug回馈

    IE团队从测试者那儿收集反馈信息,然后将漏洞发布到一个公开访问的网站上。这是微软非常明智的一个进步。用户可以从这儿看到微软对漏洞的改进信息。

结论

    总体来说,尽管IE 8也有自己的缺点,我还是对这个新版IE浏览器持肯定看法。类似querySelector、ARIA和postMessage等功能对开发者都非常有帮助。

    对于那些不足之处,例如没有新的java script功能,没有W3C事件支持,没有CSS3 Selectors,我认为将在未来的版本中会有所改进。

    如果微软IE团队能够继续按照这个正确的方向走下去,我想IE浏览器留给我们的不再是仅仅有失望。

转载:探秘IE8的强大JavaScript功能

10-30

IE 7在 CSS编程方面的改进给很多开发者带来了耳目一新的感觉,但是在JavaScript方面的表现却不敢恭维,实际上,在这方面我们看到的只是一些新的 BUG。不过幸运是,微软已经看到了这一点,在IE 8中,JavaScript已经成为其开发的一个重点,下面我们就一起从开发者角度来看一下IE 8的一些特点。rnrn 下载:Internet Explorer 8.0(IE8) 中文版rnrn IE8开始支持一些新的W3C规格,其中多了querySelector和querySelectorAll两个函数。querySelector是 CSS selector的查找原理的一种快速实现方法。IE 8是第二个实现Selectors API的浏览器(另一个浏览器是WebKit)。rnrn 简单来说,它实现的就是jQuery里令人惊艳的CSS Selector功能。例如以下的范例:(只有IE8可以跑,FF、IE7都会发生错误)rnrn InnerSpanrn ClassSpanrn rnrnrn 这儿需要特别指出的是,任何Selectors要完全依靠浏览器的原生selector实现。IE8支持CSS2.1,因此开发者无需再等待CSS 3 selectors的推出。rnrn 支持更多HTML 5功能rnrn 我一直希望在IE 8中增加一些HTML 5兼容功能,在IE 8中我们看到了4个在这方面的完整功能,非常棒!rnrn 1、HTML 5: window.location.hashrnrn 这个功能已经被多数浏览器支持的非常好。在IE8标准模式中将window.location.hash中的更改作为导航,并保存先前文档的URL,可以像在Ajax应用中模仿“后退”按钮效果。IE8中对它进行了改良,可以广播这个hashchanged时间,据我所知这是第一个采取这种处理方法的浏览器。rnrn 2、HTML 5: DOM存储rnrn 通过这个功能,数据可以持续保存在本地,它将取代原始的cookie存储机制。我们已经在2.0版本以后的Firefox浏览器中看到过这个功能,但是在Opera和Safari中尚未支持此功能。rnrn 3、HTML 5: postMessagernrn IE8现在支持跨文件消息通讯(Cross-Document Messaging-XDM)!通过onmessage事件和postMessage方法,两个来自不同域的网页可以进行通讯。rnrn 目前IE 8、Opera 9、Firefox 3和WebKit nightlies版均支持这个功能,也就是说,该功能几乎已被所有最新浏览器支持。rnrn 4、HTML 5: Offline Eventsrnrn 在IE 8中拥有一些离线事件来检测网络的中断,通过它我们可以编写精彩的离线Ajax应用。目前来看支持这一功能的浏览器包括Firefox 3和IE 8。rnrn IE8引入XDomainRequest跨站数据获取功能rnrn 这是一个非常有趣的进行跨站数据获取的功能,不过它与Firefox 3中的跨站 XMLHttpRequest的工作原理不太一样。它的跨域并不是无限制的。需要服务端返回http header中带有XDomainRequestAllowed=1才可以跨域,否则是不成功的。rnrn XMLRequest 不能跨站一直都是多子域服务器的硬伤。使得很多情况不得不考虑最原始的动态script和JSON的方式。不过IE8团队有意解决跨站访问数据的问题,这是IE8的一个进步。rnrn 另外,IE8下的XMLHttpRequest增加了一个很重要的属性 timeout和ontimeout方法,它在对程序进行优化时极其重要。rnrn DOM漏洞修补rnrn 在IE 8中getAttribute/setAttribute已经进行了重大改进。简单来说,它们现在已经可以完成属于自己的任务,IE8和和其它浏览器在这方面的差距已经不大。臭名昭著的accessing relative/absolute href/src属性问题也已经得到解决,这是一个很大的进步。另外它们还增加了hasAttribute功能。rnrn 其它新增和修复包括:rn •.ownerElement和.ownerDocument。我们现在终于有了一个统一的方法来处理子框架。rn •getElementById可以通过id来返回对象。这是一个我们期盼已久的功能。rn •getAttribute("checked") 现在返回“checked”而不是true。rn •动态创建(或修改)的单选按钮现在可以被选择了。rnrn 对于这些修复我感到即高兴又生气,高兴的是微软终于对它们做出了正确的修改,生气的则是微软花了这么长时间才做出正确的修改。rnrn W3C:事件rnrn 这个功能是IE 8目前版本完全缺失的一个部分。我们依然需要继续使用IE的attachEvent系统,还看不到addEventListener的到来。我不确认这个功能的缺失对于IE 8的Acid3支持将带来多大的影响,不过在Acid3中已经包含了对addEventListener的测试,因此微软可能已经开始考虑增加对它的支持。rnrn 从某种程度上我可以理解微软希望保留自己现有API的心情,但是我不能理解它们为什么没有兴趣也增加对addEventListener的支持。我猜测理由可能是微软不得不支持像事件捕获之类的概念。rnrn 对于这一点我感到非常失望。我认为这是下一个版本中急需修正的一个地方。rnrn JavaScript语言rnrn 在完善垃圾收集、内存管理和性能等问题上,IE团队已经进行了一些重大的改进,这些改进对我们很多应用的开发都意义重大。rnrn 尽管如此,我还是要纠正一点。尽管IE 8对于JavaScript开发者来说是非常伟大的一个浏览器,但如果更准确的说,高兴的或许只是“JavaScript+DOM”开发者。单就 JavaScript来说,IE 8却比较令人失望:在这个版本的浏览器中并没有出现任何新的纯正JavaScript功能。我只能寄望于在下一个版本中增加更多的改进了。rnrn ARIA支持rnrn 这是一个让我感到非常满意的变化。ARIA是一个非常了不起的规范,可以让Web应用有能力与读者进行清晰的交流。在此之前IE缺乏对它的支持,不过现在这一缺陷已经在IE 8中得到弥补。目前Firefox、IE和Opera已经都支持ARIA。WebKit团队似乎还没有兴趣支持这一功能,实在是令人感到不可理解。rnrn 嵌入式SVGrnrn 目前在IE 8已经增加了对嵌入式命名元素的支持。这意味着你可以对SVG和Methyl进行内联标记,从这一点上来看,IE浏览器将来有望增加对SVG的原生支持。rnrn IE Web Developer:IE版的Firebugrnrn 在IE浏览器中我们终于看到了这个类似Firebug的工具,用Firebug创建者Joe Hewitt的原话来说:“我非常高兴微软在IE8中完全复制了Firebug的功能。”我不得不承认,类似的工具已经存在了很长时间,而且深受开发者欢迎。rnrn IE Web Developer可以让你检查和编辑你的HTML DOM,显示错误信息、日志信息,显示网站源代码,监视DHTML事件和HTTP流量。rnrn 浏览模式切换rnrn 乍一看,由于这个功能的存在,你可以看一下你的IE 7网页是否能在IE 8中显示,实际上它的真正用途在于,开发者可以开发一个标准兼容的网页(IE8、Firefox、Safari和Opera),然后查看在IE 7中的显示效果。对于开发者来说,这是一个非常有用的功能,因为我们无需再借助于虚拟机中的其它版本IE浏览器来测试网页效果。rnrn Bug回馈rnrn IE团队从测试者那儿收集反馈信息,然后将漏洞发布到一个公开访问的网站上。这是微软非常明智的一个进步。用户可以从这儿看到微软对漏洞的改进信息。rnrn 结论rnrn 总体来说,尽管IE 8也有自己的缺点,我还是对这个新版IE浏览器持肯定看法。类似querySelector、ARIA和postMessage等功能对开发者都非常有帮助。rnrn 对于那些不足之处,例如没有新的JavaScript功能,没有W3C事件支持,没有CSS3 Selectors,我认为将在未来的版本中会有所改进。rnrn 如果微软IE团队能够继续按照这个正确的方向走下去,我想IE浏览器留给我们的不再是仅仅有失望。

超乎想象的面试题,厉害,厉害。!!!

02-28

rn昨天去了同望科技面试,他们的面试题,简直是不可思议,是难得的超难读面试题,在这里,我奉劝各位准备不充分的兄弟们,千万不要贸然去,否则只能浪费你一个下午的时间。rnrn 他们的面试题有两套,一套是综合题,一套是程序员题,两套都很难得!rnrn 综合题可以从你初中的一直考到你大学的,什么题都有,特别是一些逻辑推理题,可以把你推成高级侦探,那可让人晕死掉。rn 还有一些高中的概率题,你如果忘了,那就没发做了,可以用来当高考题了。综合题共有70到,在70分钟类做完他,昨天我们10 rn 个去面试的人,最都的也就做了40来到,本人也就做了35到,还不到有哪几道能对呢。其他的连题目都来不及看。rnrn 程序员题是也些很基础又很难的题目,比如计算内存参数,CPU效率,反正是一些平常难见的题目,最后是两个JAVA程序题,写了两个长长的JAVA代码在那里,要你去看他的结果是什么其中一道的结果是:rnrn 1 1 1 1 1rn 2 1 1 1 1rn 3 2 1 1 1 rn 4 3 2 1 1 rn 5 4 3 2 1rnrn这个答案是我用电脑编译出来的,人脑可编译不了,还有一道更难,代码大概有100来行,是一个2叉树的题目,也是看打印的结果,就是把数组和2叉数连起来,燃后看打印的结果,很难看,我们10个人中没1人能看出来!rnrn这题太难了(也许是对我们这些菜鸟来说的吧)。rnrn

没有更多推荐了,返回首页

私密
私密原因:
请选择设置私密原因
  • 广告
  • 抄袭
  • 版权
  • 政治
  • 色情
  • 无意义
  • 其他
其他原因:
120
出错啦
系统繁忙,请稍后再试

关闭