Firefox中的Onmouseover声音

时间:2010-02-18 07:34:43

标签: javascript firefox

我在网站上的菜单按钮上使用以下脚本进行onmouseover音效。

<script LANGUAGE="JavaScript"><!--


var aySound = new Array();

aySound[0] = "s.mp3";

document.write('<BGSOUND ID="auIEContainer">')
IE = (navigator.appVersion.indexOf("MSIE")!=-1 && document.all)? 1:0;
NS = (navigator.appName=="Netscape" && navigator.plugins["LiveAudio"])? 1:0;
ver4 = IE||NS? 1:0;
onload=auPreload;

function auPreload() {
if (!ver4) return;
if (NS) auEmb = new Layer(0,window);
else {
Str = "<DIV ID='auEmb' STYLE='position:absolute;'></DIV>";
document.body.insertAdjacentHTML("BeforeEnd",Str);
}
var Str = '';
for (i=0;i<aySound.length;i++)
Str += "<EMBED SRC='"+aySound[i]+"' AUTOSTART='FALSE' HIDDEN='TRUE'>"
if (IE) auEmb.innerHTML = Str;
else {
auEmb.document.open();
auEmb.document.write(Str);
auEmb.document.close();
}
auCon = IE? document.all.auIEContainer:auEmb;
auCon.control = auCtrl;
}
function auCtrl(whSound,play) {
if (IE) this.src = play? aySound[whSound]:'';
else eval("this.document.embeds[whSound]." + (play? "play()":"stop()"))
}
function playSound(whSound) { if (window.auCon) auCon.control(whSound,true); }
function stopSound(whSound) { if (window.auCon) auCon.control(whSound,false); }
//-->
</script>

这在IE中运行良好,但不适用于Firefox。

有人知道是否有办法在IE和Firefox中使用相同的onmouseover音效而不使用闪光灯?

由于

2 个答案:

答案 0 :(得分:0)

网站上声音的唯一方式是使用Flash或Facebook用于传入IM的任何内容,但这也需要Apple Quicktime才能播放。

答案 1 :(得分:0)

  

是否有人知道在不使用Flash的情况下是否可以在IE和Firefox中获得相同的onmouseover声音效果?

好吧,您可以使用JavaScript库来规范化跨浏览器onmouseover行为。或者,如果你真的不想 - 它应该可以用简单的JavaScript,有很多黑客来支持所有不同的浏览器。你的选择。

正如在gist 243946中发布的,这是一个jQuery代码段,可以完全按照您的要求执行:

var $sound = $('<div id="sound" />').appendTo('body');
$('#special-links-that-play-annoying-sounds-when-hovered a').hover(function() {
 $sound.html('<embed src="foo.mp3" hidden="true" autostart="true" loop="false">');
}, function() {
 // We could empty the innerHTML of $sound here, but that would only slow things down.
});

当然,这也可以用普通的旧JavaScript(没有jQuery)编写。