Встраивание YouTube iframe вызывает перенаправление в IE7 - PullRequest
0 голосов
/ 02 июля 2011

Этот фрагмент кода работает для всех браузеров, кроме IE7. В IE7 пользователь перенаправляется на http://www.youtube.com. О, и он не просто перенаправляет фрейм, а перенаправляет всю страницу! Какие-нибудь мысли? Идеи? Альтернативные шаблоны?

Пожалуйста, помогите мне. IE убивает мою волю к жизни.

  $('.youtube .cue a').live('click', function(e) {
    e.preventDefault();
    var $this = $(this);
    var $area = $this.parents('.youtube');
    var $caption = $area.find('.videoDescription');
    var $li = $this.parents('li:first');
    var vid = $.trim($(this).attr('href').replace('#', ''));
    var title = $li.find('.title').text();
    var time = $li.find('.time').text();
    var description = $li.find('.description').text();

    var $frame = $('<iframe></iframe>').attr({
      width:595,
      height:350,
      frameborder: 0,
      src: 'http://www.youtube.com/embed/' + vid
    });

    if (!hasFlash) {
      $area.find('.captioned').html('<a href="http://get.adobe.com/flashplayer/" class="no-flash">Please install Flash</a>.');
    }
    else {
      $area.find('.captioned').html('').append($frame);
    }

    $caption.find('.title').html(title);
    $caption.find('.time').html(time);
    $caption.find('.description').html(description);
  });

1 Ответ

2 голосов
/ 02 июля 2011

Это выглядит так:

var vid = $.trim($(this).attr('href').replace('#', ''));

это проблема. Извлечение href из тега <a> вернет полностью определенный URL (включая http: // и домен на передней панели). Затем в этой строке вы добавите его в конец другого полностью определенного URL:

src: 'http://www.youtube.com/embed/' + vid

Это даст странный результат, подобный этому:

http://www.youtube.com/embed/http://www.domain.com/xxxxxx

для атрибута iframe src =, который скорее всего не тот, который вам нужен.

Что может сбить вас с толку, так это то, что при извлечении href из тега <a href="index.html"> получается полный URL-адрес, даже если источник страницы имеет только относительный URL-адрес. Если вам нужен только путь или имя файла из этой ссылки href, вам придется проанализировать его.

Я подтвердил с помощью реконструкции вашего HTML и вашего кода, что, если вы дадите iFrame такой плохой URL, он перенаправит всю страницу (даже в Chrome). Вот jsfiddle: http://jsfiddle.net/jfriend00/4P3dh/.

Если нажать «Выполнить» и щелкнуть ссылку «Нажмите меня», она перенаправит всю страницу из-за неверного URL-адреса в iFrame.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...