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 相关文章推荐
文字不间断滚动(上下左右)实例代码
Apr 21 Javascript
jquery $(&quot;#variable&quot;) 循环改变variable的值示例
Feb 23 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
May 20 Javascript
jQuery图片瀑布流的简单实现代码
Mar 15 Javascript
js实现旋转木马效果
Mar 17 Javascript
jQuery中用on绑定事件时需注意的事项
Mar 19 Javascript
JS实现弹出下载对话框及常见文件类型的下载
Jul 13 Javascript
详解angularJS+Ionic移动端图片上传的解决办法
Sep 13 Javascript
vue项目国际化vue-i18n的安装使用教程
Mar 14 Javascript
微信小程序实现卡片左右滑动效果的示例代码
May 01 Javascript
JQuery事件委托原理与用法实例分析
May 13 jQuery
JS中如何优雅的使用async await详解
Oct 05 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 pcntl_fork和pcntl_fork 的用法
2009/04/13 PHP
深入PHP与浏览器缓存的分析
2013/06/03 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
PHP简单实现防止SQL注入的方法
2018/03/13 PHP
PHP生成随机码的思路与方法实例探索
2019/04/11 PHP
php的无刷新操作实现方法分析
2020/02/28 PHP
win10下 php安装seaslog扩展的详细步骤
2020/12/04 PHP
jquery实用代码片段集合
2010/08/12 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
javascript实现div的显示和隐藏的小例子
2013/06/25 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
Bootstrap每天必学之前端开发框架
2015/11/19 Javascript
JS替换字符串中指定位置的字符(多种方法)
2020/05/28 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
[07:40]DOTA2每周TOP10 精彩击杀集锦vol.4
2014/06/25 DOTA
Python help()函数用法详解
2014/03/11 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
python中利用xml.dom模块解析xml的方法教程
2017/05/24 Python
python并发2之使用asyncio处理并发
2017/12/21 Python
Python selenium实现微博自动登录的示例代码
2018/05/16 Python
python__new__内置静态方法使用解析
2020/01/07 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
Python 使用SFTP和FTP实现对服务器的文件下载功能
2020/12/17 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
重新定义牛仔布,100美元以下:Warp + Weft
2018/07/25 全球购物
开学典礼决心书
2014/03/11 职场文书
小学生田径运动会广播稿
2014/09/11 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
2014年会计工作总结
2014/11/27 职场文书
2014年乡镇纪委工作总结
2014/12/19 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
2015年小学图书室工作总结
2015/05/18 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript
修改并编译golang源码的操作步骤
2021/07/25 Golang