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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
ajax의 결과에 따른 오디오 재생 문제 문의드립니다.

QA

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

본문

현재 코드는

 

<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);
    }

답변을 작성하시기 전에 로그인 해주세요.
전체 2

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT