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 对表格的行和列都能加亮显示
Dec 26 Javascript
分享一个asp.net pager分页控件
Jan 04 Javascript
使用impress.js制作幻灯片
Sep 09 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
Nov 18 Javascript
JS中对Cookie的操作详解
Aug 05 Javascript
JavaScript实现256色转灰度图
Feb 22 Javascript
javascript实现多张图片左右无缝滚动效果
Mar 22 Javascript
详解如何使用webpack打包Vue工程
May 27 Javascript
详解vue 单页应用(spa)前端路由实现原理
Apr 04 Javascript
layui监听单元格编辑前后交互的例子
Sep 16 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
Mar 14 Javascript
vue实现简单的登录弹出框
Oct 26 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
Sony CFR 320 修复改造
2020/03/14 无线电
php下清空字符串中的HTML标签的代码
2010/09/06 PHP
thinkPHP实现瀑布流的方法
2014/11/29 PHP
微信公众平台接口开发入门示例
2014/12/24 PHP
php上传文件常见问题总结
2015/02/03 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
几行代码轻松搞定jquery实现flash8类似的连接效果
2007/05/03 Javascript
Visual Studio中的jQuery智能提示设置方法
2010/03/27 Javascript
基于JQuery的数字改变的动画效果--可用来做计数器
2010/08/11 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
改变checkbox默认选中状态及取值的实现代码
2016/05/26 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
详解XMLHttpRequest(二)响应属性、二进制数据、监测上传下载进度
2016/09/14 Javascript
Bootstrap弹出框modal上层的输入框不能获得焦点问题的解决方法
2016/12/13 Javascript
浅谈javascript中的 “ &amp;&amp; ” 和 “ || ”
2017/02/02 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
微信小程序 蓝牙的实现实例代码
2017/06/27 Javascript
vue项目如何刷新当前页面的方法
2018/05/18 Javascript
关于在vue 中使用百度ueEditor编辑器的方法实例代码
2018/09/14 Javascript
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
Python简单操作sqlite3的方法示例
2017/03/22 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
Django配置celery(非djcelery)执行异步任务和定时任务
2018/07/16 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
使用tkinter实现三子棋游戏
2021/02/25 Python
政府采购方案
2014/06/12 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
奖励申请报告范文
2015/05/15 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
浅谈Python基础之列表那些事儿
2021/05/11 Python
基于JavaScript实现年月日三级联动
2021/06/22 Javascript
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python
3050和2060哪个好 性能差多少 差距有多大 谁更有性价比
2022/06/17 数码科技