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


Posted in Javascript onAugust 12, 2007

我在这里写这个也是写点在做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中测试都可以通过.

Javascript 相关文章推荐
用js实现的仿sohu博客更换页面风格(简单版)
Mar 22 Javascript
Javascript 闭包引起的IE内存泄露分析
May 23 Javascript
获取客户端网卡MAC地址和IP地址实现JS代码
Mar 17 Javascript
jQuery绑定事件不执行但alert后可以正常执行
Jun 03 Javascript
js检测判断日期大于多少天的方法
May 04 Javascript
javascript封装简单实现方法
Aug 11 Javascript
javascript jquery对form元素的常见操作详解
Jun 12 Javascript
JavaScript实现替换字符串中最后一个字符的方法
Mar 07 Javascript
canvas简单快速的实现知乎登录页背景效果
May 08 Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
Aug 13 Javascript
JS实现打砖块游戏
Feb 14 Javascript
小程序实现可拖动的悬浮按钮
Sep 07 Javascript
IE和Mozilla的兼容性汇总event
Aug 12 #Javascript
收藏Javascript中常用的55个经典技巧
Aug 12 #Javascript
JavaScript-世界上误解最深的语言分析
Aug 12 #Javascript
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
Aug 08 #Javascript
alixixi runcode.asp的代码不错的应用
Aug 08 #Javascript
网上应用的一个不错common.js脚本
Aug 08 #Javascript
javascript 实现父窗口引用弹出窗口的值的脚本
Aug 07 #Javascript
You might like
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
PHP实现判断数组是一维、二维或几维的方法
2017/02/06 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
php生成短网址/短链接原理和用法实例分析
2020/05/29 PHP
javascript 支持链式调用的异步调用框架Async.Operation
2009/08/04 Javascript
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
js组件SlotMachine实现图片切换效果制作抽奖系统
2016/04/17 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
js 倒计时(高效率服务器时间同步)
2017/09/12 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
原生JS生成指定位数的验证码
2020/10/28 Javascript
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
python3 实现的人人影视网站自动签到
2016/06/19 Python
解读python如何实现决策树算法
2018/10/11 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
pandas中遍历dataframe的每一个元素的实现
2019/10/23 Python
python不同系统中打开方法
2020/06/23 Python
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
高级运动鞋:GREATS
2019/07/19 全球购物
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
年度考核评语
2014/01/19 职场文书
2014年教师节国旗下讲话稿
2014/09/10 职场文书
欢迎新生标语
2014/10/06 职场文书