2013-06-18 2 views
1

nickf의 예제를 사용하십시오. here IE7에 표시된 사이트에서 iframe을 대체 할 수있는 요소를 만들었습니다. 사무실의 모든 컴퓨터가 IE8로 업그레이드 될 때까지는 단기간의 갭 (stop-gap)이 생겨서 서버 측 솔루션으로 귀찮게하지 않습니다.jQuery가 IE7에서 작동하지 않는 요소를 만들었습니다.

목표는 YouTube의 소스 코드를 가져 와서 사이트의 모든 단일 비디오를 대체하지 않고도 기존의 소스 코드로 변환하는 것입니다.

var w = $('iframe').width(), 
    h = $('iframe').height(), 
    src = $('iframe').attr('src').split('/')[4]; 

$('iframe').after('<div class="iframediv"></div>'); 

$('<object></object>', {width: w, height: h}) 
.append($('<param />', {name: "movie", value: "http://www.youtube.com/v/" + src + "?hl=en_US&amp;version=3"})) 
.append($('<param />', {name: "allowFullScreen", value: "true"})) 
.append($('<param />', {name: "allowscriptaccess", value: "always"})) 
.append($('<embed />', {src: "http://www.youtube.com/v/" + src + "?hl=en_US&amp;version=3", type: "application/x-shockwave-flash", width: w, height: h, allowscriptaccess: "always", allowfullscreen: "true"})) 
.appendTo($('.iframediv')); 

이 코드의 작동 예는 내가에 문제가 있어요 생성 된 요소가 IE7에서 작동하지 않는 것입니다 jsfiddle

에 여기에서 찾을 수 있습니다. <object> 생성 코드가 손상되어 jQuery가 작동을 멈추게하는 것처럼 보이지만 Chrome에서는 정상적으로 작동합니다. 이 작업을 수행하는 데 필요한 IE7 특정 해결 방법이 있는지 확실하지 않습니다.

편집 : 지금 시험용으로 $('iframe').remove(); 줄을 일부러 버렸습니다.

편집 : 내 수정 -이 문제를 자신했다

if($('html').hasClass('ie7')) 
{ 
    var w = $('iframe').width(), 
    h = $('iframe').height(), 
    ytsrc = $('iframe').attr('src').split('/')[4]; 

    $('iframe').after('<div class="iframediv"></div>'); 
    $('<embed />', {width: w, height: h, src: "http://www.youtube.com/v/" + ytsrc + "?hl=en_US&amp;version=3", type: "application/x-shockwave-flash", allowfullscreen: "true", allowscriptaccess: "always"}).appendTo($('.iframediv')); 
    $('iframe').remove(); 
} 
+2

''HTML을 하나의 문자열로 만들고 추가 했습니까? –

+2

'$ .parseHTML (htmlstring) '에 대한 하나의 호출을 사용하여 개체/embed를 생성하는 것이 좋습니다. –

+0

현재이 작업을 알아내는 중 ... 아직 jQuery 또는 Javascript에 익숙하지 않지만 제안 사항에 대해 모두 감사드립니다. . – MacSalty

답변

1

HTML을 하나의 문자열로 작성하고 추가 했습니까?

$('.iframediv').append(' 
    <object><param name="move" etc="etc"></param> 
    <param stuff="stuff"></param> 
    <embed src=""></embed></object>'); 

이것은 예입니다. 모든 올바른 매개 변수로 테스트하십시오.

+0

Brad M에게 감사드립니다. 나는 몇 번의 시행 착오 끝에 더 많은 예제를 읽고 어제 이것을 끝내게되었습니다. – MacSalty

+0

@ 익명 성이 실제 작업을 수행하셨습니까? 당신의 해결책은 무엇입니까? –

+0

구조를 유지하기 위해 편집에 넣습니다. – MacSalty

0

. 대신 다음과 같이 사용하는 :

$('<div>') 

을 요소를 만드는 데 사용 :

$('<div></div>') 

두 번째는 너무 IE에서 작동합니다.

+0

이 코드는 불행히도 내 코드에는 영향을 미치지 않았습니다. – MacSalty