使用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&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&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&version=3", type: "application/x-shockwave-flash", allowfullscreen: "true", allowscriptaccess: "always"}).appendTo($('.iframediv'));
$('iframe').remove();
}
您是否嘗試過創建'
我建議使用'$ .parseHTML(htmlstring)' –
'一次調用來創建對象/嵌入目前正在研究這一個...仍然不熟悉jQuery或Javascript,但是謝謝你的建議。 – MacSalty