YouTube Iframe嵌入会导致IE7中的重定向

时间:2011-07-01 22:31:01

标签: javascript iframe internet-explorer-7 youtube

这段代码适用于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 个答案:

答案 0 :(得分:2)

我认为这一行:

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

是问题所在。从<a>标记中检索href将返回完全限定的URL(包括http://和前面的域)。然后,在这一行中,您将把它添加到另一个完全限定的URL的末尾:

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

这会产生这样一个奇怪的结果:

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

对于iframe src =属性,这可能不是您想要的。

可能让您失望的是,从<a href="index.html">标记中检索href会检索完全限定的URL,即使页面源只有相对URL也是如此。如果您只想要来自该链接href的路径或文件名,则必须解析它。

我已经验证了您的HTML和代码的重建,如果您将此类错误的网址提供给iFrame,它将重定向整个页面(即使在Chrome中)。这是jsfiddle:http://jsfiddle.net/jfriend00/4P3dh/

如果您点击“运行”,然后点击“点击我”链接,它会重定向整个页面,因为iFrame上的网址不正确。