Параметры JavaScript Firefox, переданные в функцию, не определены в событии <audio> - PullRequest
0 голосов
/ 10 ноября 2018

Я вижу некоторые вопросы, ранее задаваемые по этой теме, но на которые не был дан ответ, или я не понимаю ответ.

Почему следующее работает во ВСЕХ браузерах, кроме FireFox? Когда срабатывает событие onplay(), передается параметр undefined.

<html>
    <head><title></title>
    </head>
    <body>
        <audio id="audioplayer" name="player1" preload="none" onplay="audioStarted(audioplayer[0]);" src="http://kerkradio.co.za:8000/audio/beste-luisteraar.mp3?a=1" controls> </audio><br/>
        <audio id="audioplayer" name="player2" preload="none" onplay="audioStarted(audioplayer[1]);" src="http://kerkradio.co.za:8000/audio/beste-luisteraar.mp3?a=2" controls> </audio><br/>
        <audio id="audioplayer" name="player3" preload="none" onplay="audioStarted(audioplayer[2]);" src="http://kerkradio.co.za:8000/audio/beste-luisteraar.mp3?a=3" controls> </audio><br/>
        <audio id="audioplayer" name="player4" preload="none" onplay="audioStarted(audioplayer[3]);" src="http://kerkradio.co.za:8000/audio/beste-luisteraar.mp3?a=4" controls> </audio><br/>
    </body>

<script>
    function audioStarted(thePlayer) {alert(thePlayer.src);}
</script>
</html>

1 Ответ

0 голосов
/ 10 ноября 2018

То, что это работает вообще (что, я думаю, могло бы быть), является аберрацией, вызванной странным переносом идентификаторов javascript в глобальную область видимости (что делает getElementById странным образом избыточным). Firefox совершенно прав, когда кашляет этот код обратно, и я был бы удивлен, если бы он действительно работал в всех других браузерах

Попробуйте передать ключевое слово this вместо этого аудиоплеера [n] jive - у вас такая ситуация, которую this был разработан для обработки

...