2011-01-10 171 views
0

参见:http://qwer.se/stack/trailer/jQuery的不工作在IE

它工作正常,在FF,C & SF但不是在IE浏览器。不能找到错误。

IE表示:“‘未定义’是空或不是对象”

这是脚本:

<script> 
$(document).ready(function(){ 

// open popup when image is clicked 
$('img').click(function(){ 
var $movieObj = $(".tdt object"); // Cache jQuery object 
var imgID = $(this).attr("alt"), 
    movieVal = $("param[name=movie]", $movieObj).val(), 
    embedSrc = $("embed", $movieObj).attr("src"); 
$movieObj 
    .find("param[name=movie]").val(movieVal.replace(/MY-ID-NUMBER/, imgID)).end() 
    .find("embed", $movieObj).attr("src", embedSrc.replace(/MY-ID-NUMBER/, imgID)).end(); 
$(".tdb").show(); 
}); 


// close popup + restor value to default 
$('.tdb').click(function(){ 
var default1 = "http://www.player.filmtrailer.com/v3.4/player.swf?file=http://se.player-feed.previewnetworks.com/cinema/MY-ID-NUMBER/4601100213-1/"; 
var default2 = "http://www.player.filmtrailer.com/v3.4/player.swf?file=http://se.player-feed.previewnetworks.com/cinema/MY-ID-NUMBER/4601100213-1/&display_title=over&menu=true&enable_link=true&default_quality=xxlarge&controlbar=over&autostart=true&backcolor=000000&frontcolor=ffffff&share=0&repeat=always&displayclick=play&volume=80&linktarget=_blank"; 
var $movieObj = $(".tdt object"); // Cache jQuery object 
var imgID = $(this).attr("alt"), 
movieVal = $("param[name=movie]", $movieObj).val(), 
embedSrc = $("embed", $movieObj).attr("src"); 
$(".tdt object").find("param[name=movie]").val(default1); 
$(".tdt object").find("embed", $movieObj).attr("src", default2); 
$(".tdb").hide(); 
}); 

}); 
</script> 

我已经加入ID到“参数”和“嵌入”,并且还现在把脚本改成这个了。但它在IE中仍然不起作用。

// open popup when image is clicked 
$('img').click(function(){ 
var $movieObj = $(".tdt object"); // Cache jQuery object 
var imgID = $(this).attr("alt"), 
    movieVal = $('#testing').val(), 
    embedSrc = $('#player').attr("src"); 
$movieObj 
    .find('#testing').val(movieVal.replace(/MY-ID-NUMBER/, imgID)).end() 
    .find('#player').attr("src", embedSrc.replace(/MY-ID-NUMBER/, imgID)).end(); 
$(".tdb").show(); 
}); 


// close popup when background is clicked + restor value to default 
$('.tdb').click(function(){ 
var default1 = "http://www.player.filmtrailer.com/v3.4/player.swf?file=http://se.player-feed.previewnetworks.com/cinema/MY-ID-NUMBER/4601100213-1/"; 
var default2 = "http://www.player.filmtrailer.com/v3.4/player.swf?file=http://se.player-feed.previewnetworks.com/cinema/MY-ID-NUMBER/4601100213-1/&display_title=over&menu=true&enable_link=true&default_quality=xxlarge&controlbar=over&autostart=true&backcolor=000000&frontcolor=ffffff&share=0&repeat=always&displayclick=play&volume=80&linktarget=_blank"; 
var $movieObj = $(".tdt object"); // Cache jQuery object 
var imgID = $(this).attr("alt"), 
    movieVal = $('#testing').val(), 
    embedSrc = $('#player').attr("src"); 
$movieObj 
    .find('#testing').val(default1).end() 
    .find('#player').attr("src", default2).end(); 
$(".tdb").hide(); 
}); 

这是我sloved它(可能不是prity,但它的工作原理):

$('img').click(function(){ 
var default1 = '<object class="tot" width="960" height="540"><param id="testa" name="movie" value="http://www.player.filmtrailer.com/v3.4/player.swf?file=http://se.player-feed.previewnetworks.com/cinema/'; 
var default2 = $(this).attr("alt"); 
var default3 = '/4601100213-1/><param name="wmode" value="transparent" /><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><embed id="player" name="player" type="application/x-shockwave-flash" src="http://www.player.filmtrailer.com/v3.4/player.swf?file=http://se.player-feed.previewnetworks.com/cinema/'; 
var default4 = '/4601100213-1/&display_title=over&menu=true&enable_link=true&default_quality=xxlarge&controlbar=over&autostart=true&backcolor=000000&frontcolor=ffffff&share=0&repeat=always&displayclick=play&volume=80&linktarget=_blank" width="960" height="540"allowFullScreen="true" allowScriptAccess="always"></embed></object>'; 
$('.tdt').html(default1 + default2 + default3 + default2 + default4); 
$(".tdb").show(); 
}); 



$('.tdb').click(function(){ 
$('.tdt').html(''); 
$(".tdb").hide(); 
}); 
+0

在[shotInTheDark /]哪一行IE说的是有错误? – amosrivera 2011-01-10 03:20:30

+0

对不起amosrivera,没有你的评论。我现在已经以其他方式解决了代码。将尽快更新问题。如果你想要你可以评论新的解决方案(它可能不是纯正的,但它的工作原理) – Hakan 2011-01-10 03:43:35

回答

0

使用IE调试器显示该位引发错误:

$movieObj 
    .find("param[name=movie]").val(movieVal.replace(/MY-ID-NUMBER/, imgID)).end() 
    .find("embed", $movieObj).attr("src", embedSrc.replace(/MY-ID-NUMBER/, imgID)).end(); 

查看IE开发工具的源代码,发现object标签内部没有任何param标签,并且嵌入标签被盗用(</embed/>)。我不确定是什么原因造成的。

[shotInTheDark] <embed>是一个自闭的标签,也许IE浏览器错乱的非自关闭标签。