2010-02-18 3 views
1

Я использую следующий скрипт для звуковых эффектов onmouseover на кнопках меню на сайте.Onmouseover sound в Firefox

<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.

Кто-нибудь знает, есть ли способ иметь одинаковый звуковой эффект onmouseover в IE и Firefox без использования вспышки?

Благодаря

ответ

0

только путь для звука на вашем сайте, чтобы использовать любую вспышку или независимо от Facebook использует для входящих IM, но это тоже требует Apple Quicktime, чтобы играть.

0

Кто-нибудь знает, есть ли способ иметь тот же звуковой эффект onmouseover как в IE, так и в Firefox без использования Flash?

Ну, вы можете использовать библиотеку 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), а также.