2013-06-18 1 views
1

Использование nickf пример найден here Я создал элемент, чтобы взломать замену iframe на сайте, который отображается в IE7. Это короткий промежуток времени, пока все компьютеры в офисе не будут обновлены до 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(); для тестирования на данный момент.

Edit: Мой фикс -

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

Спасибо, Брэд М, я получил это вчера после некоторых проб и ошибок и прочитал больше примеров. – MacSalty

+0

@ Анонимность Сделала ли это настоящая работа? Каково было ваше решение? –

+0

Поместите это в редактирование, чтобы сохранить структуру – MacSalty

0

Я имел эту проблему сам. Вместо того чтобы использовать, как это:

$('<div>') 

для создания элементов использования:

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

второй будет работать в IE тоже.

+0

Это, к сожалению, не повлияло на мой код. – MacSalty

 Смежные вопросы

  • Нет связанных вопросов^_^