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 相关文章推荐
Jsonp 跨域的原理以及Jquery的解决方案
Jun 27 Javascript
node.js中的path.resolve方法使用说明
Dec 08 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
Mar 24 Javascript
jquery实现多屏多图焦点图切换特效的方法
May 04 Javascript
javascript实现表格增删改操作实例详解
May 15 Javascript
JQuery ztree带筛选、异步加载实例讲解
Feb 25 Javascript
JavaScript解八皇后问题的方法总结
Jun 12 Javascript
详解vue-validator(vue验证器)
Jan 16 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
Feb 14 Javascript
微信小程序之分享页面如何返回首页的示例
Mar 28 Javascript
Vue 根据条件判断van-tab的显示方式
Aug 03 Javascript
详解vue中v-for的key唯一性
May 15 Vue.js
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类中的各种拦截器用法分析
2014/11/03 PHP
PHP实现递归目录的5种方法
2016/10/27 PHP
PHP模拟http请求的方法详解
2016/11/09 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
2017/12/13 PHP
事件模型在各浏览器中存在差异
2010/10/20 Javascript
javascript面向对象入门基础详细介绍
2012/09/05 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
解析Jquery中如何把一段html代码动态写入到DIV中(实例说明)
2013/07/09 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
2015/06/03 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
完美解决node.js中使用https请求报CERT_UNTRUSTED的问题
2017/01/08 Javascript
ES6教程之for循环和Map,Set用法分析
2017/04/10 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
2017/12/05 jQuery
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
详解redux异步操作实践
2018/08/15 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
[57:28]2018DOTA2亚洲邀请赛 4.6 淘汰赛 TNC vs Liquid 第一场
2018/04/10 DOTA
Windows系统下多版本pip的共存问题详解
2017/10/10 Python
Python Sphinx使用实例及问题解决
2020/01/17 Python
pycharm新建Vue项目的方法步骤(图文)
2020/03/04 Python
python如何遍历指定路径下所有文件(按按照时间区间检索)
2020/09/14 Python
python爬取音频下载的示例代码
2020/10/19 Python
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
小学教师自我鉴定
2013/11/07 职场文书
工艺工程师工作职责
2013/11/23 职场文书
社区消防工作实施方案
2014/03/21 职场文书
员工工作自我评价
2014/09/26 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
小学五年级(说明文3篇)
2019/08/13 职场文书
mysql left join快速转inner join的过程
2021/06/30 MySQL
SONY AN-LP1 短波有源天线放大器图
2022/04/05 无线电
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript