attachEvent方法的作用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了attachEvent方法的作用相关的知识,希望对你有一定的参考价值。

用于html内代码层和UI层分离。
比如,你要给一个按钮增加一个单击事件,你会怎么做?
<input type="button" id="theBtn" value="点击" onclick="alert('点击了一下');" />
明显的,它破坏了标签,如果下次要修改这个按钮不小心就会丢失。
attachEvent是为了将事件分离,如:
<input type="button" id="theBtn" value="点击" />
var theBtn = document.getElementById("theBtn"); //取得ID为theBtn的按钮
theBtn.attachEvent("onclick", buttonClicked); //给按钮增加事件
function buttonClicked(e) alert("点击了一下"); //定义函数
attachEvent用法:
attachEvent(事件类型, 处理函数);
P.S.:在Firefox中,对应的函数是addEventListener(事件类型, 处理函数, 使用捕获);
在简单的HTML应用中可能用不用效果不明显,但是在复杂的HTML客户端JS代码内,优势就体现出来了。
参考技术A

用于HTML内代码层和UI层分离。

比如,你要给一个按钮增加一个单击事件,你会怎么做?
<input type="button" id="theBtn" value="点击" onclick="alert('点击了一下');" />
明显的,它破坏了标签,如果下次要修改这个按钮不小心就会丢失。

attachEvent是为了将事件分离

    attachEvent应该是attach Event,它是附加事件的意思。

2. 附加事件具有一种 XAML 语法和编码模式,后备代码必须使用该语法和编码模式才支持附加事件的使用。在 XAML 语法中,不仅可以通过事件名称来指定附加事件,而且还可以通过用点 (.) 分隔的事件拥有类型加上事件名称来指定。因为事件名称是使用其拥有类型的名称限定的,所以附加事件语法允许将任何附加事件附加到可以实例化的任何元素上。例如,下面是为自定义 NeedsCleaning 附加事件附加处理程序的 XAML 语法:<aqua:Aquarium Name="theAquarium" Height="600" Width="800" aqua:AquariumFilter.NeedsCleaning="WashMe"/>

3. 请注意 aqua: 前缀;该前缀在本例中是必需的,因为附加事件是来自自定义映射 xmlns 的自定义事件。

window.attachEvent在IE8中似乎不起作用

首页:

...
<script>
if (window.addEventListener) {
 // addEventListener equivalent of code below
} else if (window.attachEvent) {
 window.attachEvent("message", function(e) {
  if (e.origin != "page2.html") { return; }
  alert(e.data);
 });
}
</script>

<iframe src="page2.html"></iframe>

page2.html:

<script>
var message = "hello!";
parent.postMessage(message, '*');
</script>

此代码在Chrome,Firefox和Opera中运行良好。 IE当然具有自己的处理方式,因此即使使用自己的.attachEvent,该代码也无法工作。

page2.html实际上是另一个域上的页面;我正在发送正确的P3P标头(没关系,但是有)。

我如何找出为什么postMessage似乎未到达父页面?

答案

[attachEvent"onmessage"的形式表示其事件名称,与addEventListener(使用"message"的相对)]

以上是关于attachEvent方法的作用的主要内容,如果未能解决你的问题,请参考以下文章

attachEvent与addEventListener

window.attachEvent在IE8中似乎不起作用

对象不支持属性或方法“attachEvent” InternetExplorer 11

js绑定事件方法:addEventListener与attachEvent的不同浏览器的兼容性写法

attachEvent和addEventListener

用于 attachEvent 的 Polyfill 删除 dhtmlx attachEvent 函数