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 相关文章推荐
js获取url中的参数且参数为中文时通过js解码
Mar 19 Javascript
Javascript玩转继承(三)
May 08 Javascript
举例简介AngularJS的内部语言环境
Jun 17 Javascript
jquery实现加载进度条提示效果
Nov 23 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
Mar 09 Javascript
实例分析JS与Node.js中的事件循环
Dec 12 Javascript
Vue 实现拖动滑块验证功能(只有css+js没有后台验证步骤)
Aug 24 Javascript
修改vue+webpack run build的路径方法
Sep 01 Javascript
解决vue 绑定对象内点击事件失效问题
Sep 05 Javascript
puppeteer库入门初探
Jan 09 Javascript
详解VUE前端按钮权限控制
Apr 26 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
Oct 25 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中的四舍五入函数代码(floor函数、ceil函数、round与intval)
2014/07/14 PHP
PHP实现的mysql读写分离操作示例
2018/05/22 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
javascript eval函数深入认识
2009/02/21 Javascript
javascript 树控件 比较好用
2009/06/11 Javascript
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
jquery1.4.2 for Visual studio 2010 模板文件
2010/07/14 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
判定是否原生方法的JS代码
2013/11/12 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
JS+CSS实现的简单折叠展开多级菜单效果
2015/09/12 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
2017/01/04 Javascript
easyUI combobox实现联动效果
2017/01/17 Javascript
js 实现省市区三级联动菜单效果
2017/02/20 Javascript
webpack4 入门最简单的例子介绍
2018/09/05 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
Vue是怎么渲染template内的标签内容的
2020/06/05 Javascript
用pickle存储Python的原生对象方法
2017/04/28 Python
python单例模式获取IP代理的方法详解
2018/09/13 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
2018/12/17 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
在python中list作函数形参,防止被实参修改的实现方法
2020/06/05 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
虚拟环境及venv和virtualenv的区别说明
2021/02/05 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
几道PHP面试题
2013/04/14 面试题
软件配置管理有什么好处
2015/04/15 面试题
信息管理专业学生自荐信格式
2013/09/22 职场文书
本科毕业生求职自荐信
2014/04/09 职场文书
群众路线剖析材料范文
2014/10/09 职场文书
解决Golang中goroutine执行速度的问题
2021/05/02 Golang
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python
《原神》新角色演示“神里绫人:林隐泓洄” 宠妹狂魔
2022/04/03 其他游戏