所以我这样做了,它在 Windows XP 上的 Firefox 3.5 中工作。它显示了一个带有一些文本的框、一个图像叠加层和一个透明的 div,用于拦截所有点击。
<div id="menuOption" style="border:1px solid black;position:relative;width:100px;height:40px;">
sometext goes here.
<!-- Place image inside of you menu bar link -->
<img id="imgOverlay" src="w3.png" style="z-index:4;position:absolute;top:0px;left:0px;width:100px;height:40px;" \>
<!-- Your link here -->
<a href="javascript:alert('Hello!')" >
<div id="mylinkAction" style="z-index:5;position:absolute;top:0px;left:0px;width:100px;height:40px;">
</div>
</a>
</div>
我所做的:我制作了一个 div 并将其大小调整为菜单选项可以调整的大小,100x40px(一个任意值,但它有助于说明示例)。
div 有一个图像叠加层和一个链接叠加层。该链接包含一个大小与“menuOption”div 相同的 div。通过这种方式,整个框都会捕获用户点击。
测试时您需要提供自己的图像。:)
警告:如果您希望菜单按钮响应用户交互(例如,更改颜色以模拟按钮),那么您将需要附加到将在标签上调用的 javascript 的额外代码,此额外代码可以解决“ menuOption' 元素通过 DOM 并改变它的颜色。
此外,我知道没有其他方法可以获取单击事件,并将其注册到可见页面元素下方的元素上。今年夏天我也试过这个,除了这个没有找到其他解决方案。
希望这可以帮助。
PS:关于quirksmode事件的文章对我了解事件在浏览器中的行为大有帮助。