Ajax 板


LINE

1F:→ StarTouching:我找到问题了 Fx要把event当作function参数 01/15 18:47
2F:→ StarTouching:i.e. Function("event", "if(keyVerify(event)")...) 01/15 18:48
3F:→ StarTouching:不过还是没搞懂 正在思索中... 01/15 18:49
4F:→ StarTouching:我想最好的解释是 匿名函式必须传递event参数 01/15 18:51
5F:→ StarTouching:内部不会自动获得event 01/15 18:52
6F:→ StarTouching:所以说 IE和Chrome能执行 应该都是因为window.event 01/15 18:53
7F:→ StarTouching:另外像html onclick=後面的部分自动就会有event传入 01/15 18:57
8F:→ StarTouching:主要差异在这里 01/15 18:57
- ms dom 中,event 发生时,记载 event data 的 object 放在一个 global variable 里面, 这个 global variable 叫做 event。 - 而 global variable 其实就是 global object 的某个 property。 - 当我们讨论 client-side 的时候 global object 就是 window object。 综合以上三点,所以 ms dom 中,handler 需要 event data 的时候,会写 window.event, 事实上你写 event 也是一样的意思。 oncilck = Function("if(keyVerify(event)")...) 当 Function constructor 被 evaluate 的时候,是在 global scope 中 evaluate, 而你的 function body 并没有定义 local 的 event variable, 结果就是拿到 global variable 的 event。 但是在 w3c dom 中并不是把 event data 放在 global variable 里, 而是作为 handler 的第一个参数传进 function body。 因此你写 Function("if(keyVerify(event)")...) 没有反应是理所当然的, 当你写 Function("event", "if(keyVerify(event)")...) 的时候, 便定义了第一个参数叫 event,所以在 function body 才可以拿到 event, 小结,ms dom 中 Function("if(keyVerify(event)")...),event 拿到的是 global variable; w3c dom 中,Function("event", "if(keyVerify(event)")...),event 是 local variable。 所以才会有 TonyQ 提到的 function(event) { event = event || window.event } 的写法, 这是在说,当 event 这个 local variable 存在的时候,就用这个, 否则就拿 global 的 event variable 来用。 当我们写 event handler attribute 时,写的是 function body, 但无论是 ms 或 w3c dom,evaluate event handler attribute 的时候, 都会让 handler 有一个 event variable 可以用。 在这里你有几点我想提一下,如果你知道自己在做什麽请略过。 首先在 javascript 里面如果是要动态产生 function 的话,并不需要用 Function constructor。 写 function(){} 就可以了,理由一是 Function constructor 要把 function body 交给 interpreter 处理,这是很昂贵的事情;理由二,这制造了 injection 的时机。 第二 event handler attribute 无法做到 separation of concern,html, css, javascript 这三者, 巧妙的分开了 structure, style and behaviour concerns, 当你在 html 中写 event handler attribute 时,已经把 structure 跟 behaviour 混在一起了。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 175.180.46.219
9F:推 mrbigmouth:推专业 01/17 11:55







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP