Jplayer, воспроизводящий аудио, вызывает ошибку в Safari только для некоторых аудио - PullRequest
0 голосов
/ 08 марта 2019

У меня есть скрипт ниже на моей странице, который создает все jplayers при загрузке страницы, и когда нажимается кнопка воспроизведения, воспроизводится звук.Но у меня странная проблема: для некоторых аудио кнопка воспроизведения запускается и внезапно останавливается, ничего не воспроизводя.

Проблема только на устройствах Mac и других мобильных устройствах IOS

Нижемой код, который я использую для воспроизведения аудиофайлов

<script>
    require(["jquery"], function($) {

    $(document).ready(function(){
        /*---Create a jplayer instance on click on the play image---*/

        var mediaDetailJson = '<?php echo json_encode($mediaDetail); ?>';
        mediaDetailJson = $.parseJSON(mediaDetailJson);

        $(".jp-play").on('click', function(e) {

            e.preventDefault();

            var jPlayerId = $(this).closest('.jp-audio').prev().attr('id');
            var counter = jPlayerId.replace(/[^\d]+/, '');
            counter = parseInt(counter);

            $("#"+jPlayerId).jPlayer({
                ready: function (event) {
                    $(this).jPlayer("setMedia", {
                        title: mediaDetailJson[counter]['title'],
                        mp3: mediaDetailJson[counter]['path']
                    });
                },
                play: function() { // To avoid multiple jPlayers playing together.
                    $(this).jPlayer("pauseOthers");
                },
                swfPath: "https://www.voicebooking.com/js",

                nativeSupport: true,
                cssSelectorAncestor: "#jp_container_"+counter,
                wmode: "window",
                globalVolume: true,
                useStateClassSkin: true,
                autoBlur: false,
                smoothPlayBar: true,
                keyEnabled: true,
                remainingDuration: true,
                toggleDuration: true,
                volume: 1
            }).jPlayer("play");
        });
    });


    });


    function updateHeaderTitle(text){
        jQuery("#audio_heading_text").html(text);
        jQuery("#audio_product").val(text);

    }
</script>

Я провел некоторое исследование, и некоторые люди сказали, что IOS не поддерживает воспроизведение аудиофайлов в документе. Уже поэтому требуется какое-то пользовательское событие.Затем я попытался с помощью приведенного ниже сценария, но все равно безуспешно.

<script>
    require(["jquery"], function($) {

    $(document).ready(function(){
        /*---Create a jplayer instance on click on the play image---*/

        var mediaDetailJson = '<?php echo json_encode($mediaDetail); ?>';
        mediaDetailJson = $.parseJSON(mediaDetailJson);

        $(".jp-play").on('click', function(e) {

            e.preventDefault();

            var jPlayerId = $(this).closest('.jp-audio').prev().attr('id');
            var counter = jPlayerId.replace(/[^\d]+/, '');
            counter = parseInt(counter);

            $("#"+jPlayerId).jPlayer({
                ready: function (event) {
                    $(this).jPlayer("setMedia", {
                        title: mediaDetailJson[counter]['title'],
                        mp3: mediaDetailJson[counter]['path']
                    });
                },
                play: function() { // To avoid multiple jPlayers playing together.
                    $(this).jPlayer("pauseOthers");
                },
                swfPath: "https://www.voicebooking.com/js",

                nativeSupport: true,
                cssSelectorAncestor: "#jp_container_"+counter,
                wmode: "window",
                globalVolume: true,
                useStateClassSkin: true,
                autoBlur: false,
                smoothPlayBar: true,
                keyEnabled: true,
                remainingDuration: true,
                toggleDuration: true,
                volume: 1
            }).jPlayer("play");
        });
    });


    });


    function updateHeaderTitle(text){
        jQuery("#audio_heading_text").html(text);
        jQuery("#audio_product").val(text);

    }
</script>

Кто-нибудь знает, что мне не хватает?На устройстве Mac, в браузере Safari, я получаю следующую ошибку:

Необработанный отказ от обещания: NotAllowedError (DOM Exception 35)

Но только для проблемных аудио.

Пожалуйста, помогите!

...