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 相关文章推荐
jQuery 1.5 源码解读 面向中高阶JSER
Apr 05 Javascript
JQuery学习笔录 简单的JQuery
Apr 09 Javascript
ie浏览器使用js导出网页到excel并打印
Mar 11 Javascript
JS按回车键实现登录的方法
Aug 25 Javascript
JS实现光滑展开合拢的菜单效果代码
Sep 16 Javascript
JavaScript中setTimeout的那些事儿
Nov 14 Javascript
微信小程序中做用户登录与登录态维护的实现详解
May 17 Javascript
vue.js开发实现全局调用的MessageBox组件实例代码
Nov 22 Javascript
JSON基本语法及与JavaScript的异同实例分析
Jan 04 Javascript
vue实现抖音时间转盘
Sep 08 Javascript
浏览器JavaScript调试功能无法使用解决方案
Sep 18 Javascript
JavaScript 判断浏览器是否是IE
Feb 19 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
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
PHP EOT定界符的使用详解
2008/09/30 PHP
PHP 写文本日志实现代码
2010/05/18 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
2013/04/15 PHP
PHP的邮件群发系统phplist配置方法详细总结
2016/03/30 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
Laravel框架查询构造器 CURD操作示例
2019/09/04 PHP
几个高效,简洁的字符处理函数
2007/04/12 Javascript
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
javascript 验证日期的函数
2010/03/18 Javascript
基于Jquery的开发个代阴影的对话框效果代码
2011/07/28 Javascript
JavaScript字符串插入、删除、替换函数使用示例
2013/07/25 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
浅谈JavaScript变量的自动转换和语句
2016/06/12 Javascript
jQuery实现自动调用和触发某个事件的方法
2016/11/18 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
原生js中ajax访问的实例详解
2017/09/19 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
Python实现多进程的四种方式
2019/02/22 Python
Python批量生成幻影坦克图片实例代码
2019/06/04 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
后勤主管岗位职责
2014/03/01 职场文书
民主生活会批评与自我批评总结
2014/10/17 职场文书
详解Python 3.10 中的新功能和变化
2021/04/28 Python
Vue CLI中模式与环境变量的深入详解
2021/05/30 Vue.js
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers