2010-04-27 2 views
0

자바 스크립트 (jQuery를)유튜브 API는 요소를 교체하지 않을의 jQuery ATTR 속성

function display_youtube(new_url) { 
    $('#movie_url').removeAttr('value'); 
    $('#embed_url').removeAttr('src'); 
    $(document).ready(function() { 
     $('#movie_url').attr('value', new_url); 
     $('#embed_url').attr('src', new_url); 
     $('#shade').css('display', 'block'); 
     $('#youtube_player').css('display', 'block'); 
     $('#exit_youtube').css('display', 'block'); 
    }); 
} 

HTML

<object width="720" height="480"> 
<param id="movie_url" name="movie" value="http://www.youtube.com/v/_eaToCSn7yU?f=user_uploads&app=youtube_gdata&autoplay=0" /> 
<param name="allowFullScreen" value="true" /> 
<param name="allowscriptaccess" value="always" /> 
<embed id="embed_url" src="http://www.youtube.com/v/_eaToCSn7yU?f=user_uploads&app=youtube_gdata&autoplay=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="720" height="480" /> 
</object> 

하이퍼 링크 내가 YouTube의 API를 구문 분석 한 적이 무엇

<a href="javascript:display_youtube('http://www.youtube.com/v/_eaToCSn7yU?f=user_uploads&app=youtube_gdata&autoplay=1');">Click Here for Fun!</a> 

내 사용자 채널의 동영상

위의 하이퍼 링크는 위의 JavaScript 함수를 트리거하기 위해 생성 된 php이며 id에 포함 된 특성에서 URL을 바꿉니다. "movie_url"및 "embed_url"은 FF에서와 같이 작동하지만 IE에서는 .css 명령.

내 생각에 IE는 PARAM 및 EMBED에 ID를 할당하는 것을 좋아하지 않습니다.

+0

http://stackoverflow.com/questions/1081656/object-param-jquery의 복제본처럼 보입니다. –

답변

0

해결되었습니다. 내 새 코드는 다음과 같습니다. 문제는 IE가 Flash 매개 변수를 처리 한 것이 었습니다 (객체의 params를 비동기로 새로 고침하지 않았습니다). 그것은 FF로 잘 작동하고 있었기 때문에 비디오를 임베딩하고 객체로 처리하지 않았습니다.

새로운 자바 스크립트

function display_youtube(new_url) { 
    $('#object_url').replaceWith('<param id="object_url" name="movie" value="' +new_url+ '" />'); 
    $('#embed_url').replaceWith('<embed id="embed_url" src="' +new_url+ '" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="720" height="480" />'); 
    $('#shade').css('display', 'block'); 
    $('#youtube_player').css('display', 'block'); 
    $('#exit_youtube').css('display', 'block'); 
} 
function exit_youtube() { 
    $('#object_url').replaceWith('<param id="object_url" />'); 
    $('#embed_url').replaceWith('<embed id="embed_url" />'); 
    $('#shade').css('display', 'none'); 
    $('#youtube_player').css('display', 'none'); 
    $('#exit_youtube').css('display', 'none'); 
} 

새로운 HTML

<object width="720" height="480"> 
    <param id="object_url" /> 
    <param name="allowFullScreen" value="true" /> 
    <param name="allowscriptaccess" value="always" /> 
    <embed id="embed_url" /> 
</object> 

나는 트릭 여기에 개체에 대해 어떠한 작업을 수행하기 전에 효과, jQuery를에서 지침에 의존하는 IE를 강제로 생각 IE가 처음부터 매개 변수를 캐싱하지 못하게합니다. FTW!