2013-06-18 69 views
1

使用nickf的示例發現here 我創建了一個元素來在IE7中顯示的網站上一起替換iframe的替換元素。這是一個短暫的差距,直到辦公室的所有計算機都升級到IE8,這就是爲什麼我們不打擾服務器端解決方案的原因。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')); 

這段代碼的工作示例可以在這裏找到在jsfiddle

什麼我遇到的麻煩是創建的元素沒有在IE7工作。看起來好像<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)' –

+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