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 相关文章推荐
IE8 引入跨站数据获取功能说明
Jul 22 Javascript
ExtJS4 Grid改变单元格背景颜色及Column render学习
Feb 06 Javascript
js数组操作常用方法
May 08 Javascript
原生js和jQuery实现淡入淡出轮播效果
Dec 25 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
May 23 Javascript
Vue.js鼠标悬浮更换图片功能
May 17 Javascript
微信小程序实现聊天对话(文本、图片)功能
Jul 06 Javascript
vue实现打印功能的两种方法
Sep 07 Javascript
解决layer.confirm快速点击会重复触发事件的问题
Sep 23 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
Apr 22 Javascript
基于javascript处理nginx请求过程详解
Jul 07 Javascript
WebPack工具运行原理及入门教程
Dec 02 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
德生PL330测评
2021/03/02 无线电
php框架Phpbean说明
2008/01/10 PHP
PHP 导出Excel示例分享
2014/08/18 PHP
php写入数据到CSV文件的方法
2015/03/14 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
2015/04/08 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
PHP加密技术的简单实现
2016/09/04 PHP
Prototype PeriodicalExecuter对象 学习
2009/07/19 Javascript
IFrame跨域高度自适应实现代码
2012/08/16 Javascript
css结合js制作下拉菜单示例代码
2014/02/27 Javascript
JavaScript基于ajax编辑信息用法实例
2015/07/15 Javascript
详解javascript遍历方式
2015/11/11 Javascript
ES6的新特性概览
2016/03/10 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
js实现图片淡入淡出切换简易效果
2016/08/22 Javascript
js实现楼层导航功能
2017/02/23 Javascript
无法获取隐藏元素宽度和高度的解决方案
2017/03/07 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
js实现自定义滚动条的示例
2020/10/27 Javascript
Python 时间处理datetime实例
2008/09/06 Python
Python判断文件和字符串编码类型的实例
2017/12/21 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
详解Python利用random生成一个列表内的随机数
2019/08/21 Python
python+jinja2实现接口数据批量生成工具
2019/08/28 Python
Python定时器线程池原理详解
2020/02/26 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
HTML5之tabindex属性全面解析
2016/07/07 HTML / CSS
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
会计岗位描述
2014/02/22 职场文书
走近毛泽东观后感
2015/06/04 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
Pytorch 统计模型参数量的操作 param.numel()
2021/05/13 Python
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技