【发布时间】:2013-01-30 03:14:11
【问题描述】:
我有一个简单的设置:单击图像后,我想要播放 mp3 文件。
根据我记得的大多数来源,建议创建一个虚拟 span 元素,可以在其中嵌入音频播放器,以便在单击图像时自动启动。
执行此类操作的函数如下:
<script language="javascript" type="text/javascript">
function playSound(soundfile,evt) {
document.getElementById("dummy").innerHTML = "<embed src=\""+soundfile+"\" hidden=\"true\" autostart=\"true\" loop=\"false\" />";
evt.preventDefault(); // this doesnt do anything
return false; // neither does this
}
</script>
图片的 HTML 代码:
<a href="#" onclick="playSound('aud.mp3'); return false;">
我将“虚拟”跨度放置在页面的最底部。单击图像时,会播放声音,但令人难以置信的是页面会自动向下滚动到此 span 元素的位置。
我在 IE 和 Firefox 上试过这个:没有出现这个问题。只有在最新版本的 Chrome (24.0.1312.56 m) 中才会发生这种情况。我在两台电脑上都试过了。
有人知道怎么回事吗?你如何摆脱这个烦人的滚动?
return false; 没有帮助(它们都没有;第二个只是通过 # 属性显示滚动到顶部)。 preventDefault() 也没有。也不会将 href 属性从 # 更改为 javascript:void(0)。
【问题讨论】:
-
尝试使用
span代替anchor并设置样式 -
您认为
playSound的evt参数将来自哪里?我猜你想象浏览器会神奇地将事件作为第二个参数添加到对playSound的调用中? -
@torazaburo 老实说,我不知道。这短暂地闪过我的脑海,但我认为
preventDefault甚至不适合做任何人。 @ArunPJohny 我尝试将anchor更改为span,但同样的事情发生了。innerHTML方法的某些内容仍然会导致滚动效果,但我不知道您的意思是否更具体。
标签: javascript innerhtml