【发布时间】:2020-11-02 20:16:16
【问题描述】:
环境: Windows 7的, 互联网浏览器 8, 闪存 ActiveX 10.1.53.64, wmode=透明
刚刚写了一个小测试页面,可以在 IE 和 Firefox 或任何其他浏览器中加载。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Event bubbling test</title>
</head>
<body onclick="alert('body');" style="margin:0;border-width:0;padding:0;background-color:#00FF00;">
<div onclick="alert('div');" style="margin:0;border-width:0;padding:0;background-color:#FF0000;">
<span onclick="alert('span');" style="margin:0;border-width:0;padding:0;background-color:#0000FF;">
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://fpdownload.macromedia.com/get/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="159" height="91" id="flashAbout_small" align="absmiddle">
<param name="movie" value="http://www.adobe.com/swf/software/flash/about/flashAbout_info_small.swf"/>
<param name="quality" value="high"/>
<param name="bgcolor" value="#FFFFFF"/>
<param name="wmode" value="transparent"/>
<embed src="http://www.adobe.com/swf/software/flash/about/flashAbout_info_small.swf" quality="high" bgcolor="#FFFFFF" width="159" height="91" wmode="transparent" name="flashAbout_small" align="absmiddle" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer"/>
</object>
</span>
</div>
</body>
</html>
所以点击任何颜色的形状都应该产生一个警报(除了 IE 中的绿色,不知道为什么,但我希望这是题外话,与我的问题无关)。
在 Firefox 中单击 Flash 容器可以正常工作。您应该按以下顺序获得警报框,其中包含:span、div 和 body。 Flash 将事件冒泡到 HTML。但这在 IE 中不会发生。
那么为什么 IE 中的 Flash 不将事件冒泡到 HTML 中呢?
编辑:正如 Andy E 所提到的,这种行为也可以在 Google Chrome 中看到,据我所知,它没有使用 ActiveX 将 Flash 电影嵌入到页面中。
【问题讨论】:
标签: javascript html flash events dom-events