这段代码适用于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);
});
答案 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上的网址不正确。