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


Posted in Javascript onJanuary 09, 2007

一般情况下,我们在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 相关文章推荐
JavaScript Event事件学习第一章 Event介绍
Feb 07 Javascript
Javascript 面向对象 命名空间
May 13 Javascript
Javascript中的for in循环和hasOwnProperty结合使用
Jun 05 Javascript
Javascript中克隆一个数组的实现代码
Dec 06 Javascript
js实现的标题栏新消息闪烁提示效果
Jun 06 Javascript
JavaScript中的replace()方法使用详解
Jun 06 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
Oct 24 Javascript
基于bootstrap实现收缩导航条
Mar 17 Javascript
jQuery实现base64前台加密解密功能详解
Aug 29 jQuery
基于Vue渲染与插件的加载顺序的问题详解
Mar 05 Javascript
vue结合element-ui使用示例
Jan 24 Javascript
详解微信小程序回到顶部的两种方式
May 09 Javascript
Javascript调试工具(下载)
Jan 09 #Javascript
如何在Mozilla Gecko 用Javascript加载XSL
Jan 09 #Javascript
如何让动态插入的javascript脚本代码跑起来。
Jan 09 #Javascript
JS效率个人经验谈(8-15更新),加入range技巧
Jan 09 #Javascript
你所要知道JS(DHTML)中的一些技巧
Jan 09 #Javascript
sina的lightbox效果。
Jan 09 #Javascript
JS中简单的实现像C#中using功能(有源码下载)
Jan 09 #Javascript
You might like
PHP句法规则详解 入门学习
2011/11/09 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
php单例模式的简单实现方法
2016/06/10 PHP
javascript Demo模态窗口
2009/12/06 Javascript
为JavaScript提供睡眠功能(sleep) 自编译JS引擎
2010/08/16 Javascript
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
jQuery 常见操作实现方式和常用函数方法总结
2011/05/06 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
jquery实现图片灯箱明暗的遮罩效果
2013/11/15 Javascript
封装好的一个万能检测表单的方法
2015/01/21 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
JavaScript实现输入框与清空按钮联动效果
2016/09/09 Javascript
移动端使用localStorage缓存Js和css文的方法(web开发)
2016/09/20 Javascript
Centos7 中 Node.js安装简单方法
2016/11/02 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
vue.js与element-ui实现菜单树形结构的解决方法
2018/04/21 Javascript
微信小程序实现留言板
2018/10/31 Javascript
laypage+SpringMVC实现后端分页
2019/07/27 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
Python创建普通菜单示例【基于win32ui模块】
2018/05/09 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
2014年酒店工作总结范文
2014/11/17 职场文书
高中教师个人工作总结
2015/02/10 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
2019年大学推荐信
2019/06/24 职场文书
浅谈CSS不规则边框的生成方案
2021/05/25 HTML / CSS
MySQL 四种连接和多表查询详解
2021/07/16 MySQL