2012-04-21 6 views
0

노래 제목을 클릭하면 소스 태그의 소스를 변경하는 기능을 만들고 있습니다. Chrome 및 Firefox에서는 작동하지만 Internet Explorer에서는 작동하지 않습니다. 여기 IE에서 스크립트는 div의 innerhtml을 변경하지 않습니다

는 기능입니다 :

function loadSong(title) { 
    var wav = "samples/" + title + ".wav"; 
    var ie = "<embed id='ie' src='" + wav + "'></embed>"; 
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { 
     //test for MSIE x.x 
     var newSong = document.getElementById("playerwrapper") 
     newSong.innerHTML = ie; 
    } else { 
     var audio = document.getElementById("audio"); 
     audio.pause(); 
     audio.src = wav; 
     audio.play(); 
    } 
} 

그리고 네, (소스로 변경되고 난 크롬과 파이어 폭스에 내장 플레이어를 시도하고, 내가 M4A 파일을 IE에서 HTML5 오디오 요소를 사용하여 시도 크롬 및 파이어 폭스에서와 같은 방식).

다음,이 오디오 플레이어 자체이다 (다만 경우에 모든 것을 포함, 죄송는 무관 인 경우) : 마지막으로

<?php 
if($samples == 1) { 
    if (isset($_SERVER['HTTP_USER_AGENT']) && 
     (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false)) 
    { 
     print " 
      <div id='playrwrapper'> 
       <embed id='ie' src='samples/alright.wav' autostart='false'> 
       </embed> 
      </div>"; 
    } else { 
     print " 
      <div id='playerwrapper'> 
       <audio id='audio' preload='auto' tabindex='0' controls> 
        <source id='wav' type='audio/wav' src='samples/alright.wav'/> 
       </audio> 
      </div>"; 
    }; 
}; 
?> 

,이 함수가 호출되는 방법입니다

<p onclick='loadSong("songtitle")'>Song Title</p> 
<p onclick='loadSong("anothersongtitle")'>Another Song Title</p> 
<p onclick='loadSong("doomkittiesofmars")'>Doom Kitties of Mars</p> 

미리 조언 해 주셔서 감사합니다.

답변

1

IE는 나쁜 사람입니까?

소스가 변경된 경우 IE는 object 요소를 다시로드하지 않습니다. 페이지가로드되면 기간 만로드합니다.

어떻게 해결할 수 있습니까? 단순 : 기존 요소를 복제하고 이전 요소를 삭제 한 다음 새 요소를 추가하십시오. 예 :

// innerHTML bla bla bla 
newS = newSong.cloneNode(true) // Deep copy 
newSong.parentNode.replaceChild(newS, newSong) 
관련 문제