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 相关文章推荐
Node.js实战 建立简单的Web服务器
Mar 08 Javascript
Node.js中使用事件发射器模式实现事件绑定详解
Aug 15 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
Apr 07 Javascript
bootstrap输入框组代码分享
Jun 07 Javascript
bootstrap学习笔记之初识bootstrap
Jun 21 Javascript
JS实现JSON.stringify的实例代码讲解
Feb 07 Javascript
javascript使用btoa和atob来进行Base64转码和解码
Mar 20 Javascript
深入理解AngularJs-scope的脏检查(一)
Jun 19 Javascript
angularjs实现简单的购物车功能
Sep 21 Javascript
浅谈Node.js之异步流控制
Oct 25 Javascript
通过js动态创建标签,并设置属性方法
Feb 24 Javascript
vue axios请求拦截实例代码
Mar 29 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中的观察者模式
2010/03/24 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
基于jquery的loading效果实现代码
2010/11/05 Javascript
菜鸟学习JavaScript小实验之函数引用
2010/11/17 Javascript
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2011/09/13 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
select、radio表单回显功能实现避免使用jquery载入赋值
2013/06/08 Javascript
JS实现定时页面弹出类似QQ新闻的提示框
2013/11/07 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
get(0).tagName获得作用标签示例代码
2014/10/08 Javascript
JavaScript常用的返回,自动跳转,刷新,关闭语句汇总
2015/01/13 Javascript
javascript批量修改文件编码格式的方法
2015/01/27 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
2015/10/23 Javascript
jQuery简单操作cookie的插件实例
2016/01/13 Javascript
简单了解Backbone.js的Model模型以及View视图的源码
2016/02/14 Javascript
强大的JavaScript响应式图表Chartist.js的使用
2017/09/13 Javascript
浅谈Vue.set实际上是什么
2019/10/17 Javascript
JavaScript This指向问题详解
2019/11/25 Javascript
[02:44]DOTA2英雄基础教程 克林克兹
2014/01/15 DOTA
更新修改后的Python模块方法
2019/03/03 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
python pyinstaller打包exe报错的解决方法
2019/11/02 Python
python中查看.db文件中表格的名字及表格中的字段操作
2020/07/07 Python
python 利用jieba.analyse进行 关键词提取
2020/12/17 Python
css3动画鼠标放上图片逐渐变大鼠标离开图片逐渐缩小效果
2021/01/27 HTML / CSS
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
铭立家具面试题
2012/12/06 面试题
吨的认识教学反思
2014/04/27 职场文书
电子专业求职信
2014/06/19 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
2014年加油站工作总结
2014/12/04 职场文书
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android