Javascript-Mozilla和IE中的一个函数直接量的问题分析

宠物企鹅发

宠物企鹅发

2016-02-19 09:19

岁数大了,QQ也不闪了,微信也不响了,电话也不来了,但是图老师依旧坚持为大家推荐最精彩的内容,下面为大家精心准备的Javascript-Mozilla和IE中的一个函数直接量的问题分析,希望大家看完后能赶快学习起来。
我在这里写这个也是写点在做js时遇到的问题,当个笔记.没有想到被hax "批"了一顿,不过也是说得有些道理的.毕竟这个内容也不痛不痒的

一般情况下,我们在JS中用函数直接量来命名一个简单的函数。


script type="text/javascript"
var func=function(s){window.alert(s)};
func("never-online")
/script

这在IE或者Mozilla中也是合法的(ECMA标准中有函数直接量的定义)。

但是IE中还有另外一种更简单的命名方式可以简化我们的代码:

div id="demo"http://blog.never-online.net/div
script type="text/javascript"
var $=document.getElementById;
alert($("demo").innerHTML);
/script

而这在Mozilla中没有报语法错误,而是抛出了一个异常, 操作符非法:
下面代码是捕获Mozilla抛出的异常并打印出来

div id="demo"http://blog.never-online.net/div
script type="text/javascript"
var $=document.getElementById;
try {
alert($("demo").innerHTML);
} catch(ex) { document.write(ex)}
/script

异常内容为:
[Exception... "Illegal operation on WrappedNative prototype object" nsresult: "0x8057000c (NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)" location: "JS frame :: file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/non4A.htm :: :: line 22" data: no]

现在还不知道能不能在Mozilla的config中设置,总之写代码的时候要注意.

我在google上搜索 getElementById 0x8057000c 关键字,还是有很多类似的情况,比如

http://groups.google.co.uk/group/comp.lang.javascript/browse_thread/thread/65a1a23f5dd7c9ad/d264d04d9d768b28?tvc=2#d264d04d9d768b28

没有更好的解决办法,但是可以变通,比这样写

div id="foo"/div
script
document.$ = document.getElementById; 
alert(document.$("foo").innerHTML);
/script

因为js可以动态的给对象增加属性和方法,上面的例子在ie和moz中测试都可以通过.

展开更多 50%)
分享

猜你喜欢

Javascript-Mozilla和IE中的一个函数直接量的问题分析

Web开发
Javascript-Mozilla和IE中的一个函数直接量的问题分析

Javascript-Mozilla和IE中的一个函数直接量的问题

Web开发
Javascript-Mozilla和IE中的一个函数直接量的问题

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

javascript之函数直接量(function(){})()

Web开发
javascript之函数直接量(function(){})()

贴一个在Mozilla中常用的Javascript代码

Web开发
贴一个在Mozilla中常用的Javascript代码

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

一个高ai的分页函数和一个url函数

PHP
一个高ai的分页函数和一个url函数

split 函数的一个问题 - PHPchina

PHP
split 函数的一个问题 - PHPchina

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Oracle 数据库自动存储管理-安装配置

Oracle 数据库自动存储管理-安装配置

Oracle 10g的DBA无法登录解决方案

Oracle 10g的DBA无法登录解决方案
下拉加载更多内容 ↓