Warning: Undefined array key "mobile_dir" in /home/kagla/new-sir/old/common.php on line 315
ajax의 결과에 따른 오디오 재생 문제 문의드립니다.

ajax의 결과에 따른 오디오 재생 문제 문의드립니다.

ajax의 결과에 따른 오디오 재생 문제 문의드립니다.

QA

ajax의 결과에 따른 오디오 재생 문제 문의드립니다.

답변 3

본문

현재 코드는

 

<audio id="audio_id">
    <source src="/mid/recv_mail.wav" type="audio/wav">
</audio>

를 body 에 생성을 한 상태에서

 

    function ajaxCall(){

            $.ajax({
                type: "POST",
                url: "/etc/memo.asp",
                cache:false,
                dataType: 'json',
                async: false
            }).done(function (data) {
                    if (data.success) {
                        if(parseInt(data.value) > 0)
                        {
                            document.getElementById('audio_id').play();
                        }
                    };
            });
            setTimeout('ajaxCall()', 5000);
    }

 

식으로 ajax에서 메모가 왔을때 소리를 나게끔 하게 만들려 합니다. 하지만 크롬에서

 

Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first

의 에러가 떠서 소리는 안나오고 있습니다.

iframe 으로 silence.mp3 를 넣어보기도 하고 muted 도 넣어보기도 하고 했지만 안되네요

 

var promise = document.querySelector('video').play();

if (promise !== undefined) {
  promise.then(_ => {
    // Autoplay started!
  }).catch(error => {
    // Autoplay was prevented.
    // Show a "Play" button so that user can start playback.
  });
}

 

식도 적용 시켜봤는데 여전히 안되고 있습니다.

 

제가 잘모르는 상태에서 적용시키려 해서 그런가 잘 안되고 있습니다.

 

잘아시는 분들의 코드 좀 부탁드리겠습니다.

 

감사합니다.

이 질문에 댓글 쓰기 :

답변 3

javascript를 <body 끝부분으로 옮겨 보세요.

https://gamedev.stackexchange.com/questions/163365/html5-games-play-failed-because-the-user-didnt-interact-with-the-document-fi

https://stackoverflow.com/questions/49930680/how-to-handle-uncaught-in-promise-domexception-play-failed-because-the-use

 

참고하세요.

사용자가 click하지 않은 경우 자동으로(javascript) 소리나는 것을 크롬이 막는다고 합니다.

 다음과 같이 하여 테스트 해보세요

 

function ajaxCall(){

            $.ajax({
                type: "POST",
                url: "/etc/memo.asp",
                cache:false,
                //dataType: 'json',
                async: false
            }).done(function (data) {

             document.getElementById('audio_id').play();

/*
                    if (data.success) {
                        if(parseInt(data.value) > 0)
                        {
                            document.getElementById('audio_id').play();
                        }
                    };

*/
            });
            setTimeout('ajaxCall()', 5000);
    }

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 129,406
© SIRSOFT
현재 페이지 제일 처음으로