简体   繁体   English

jQuery在IE中不起作用

[英]Jquery that doesn't work in IE

See: http://qwer.se/stack/trailer/ 请参阅: http//qwer.se/stack/trailer/

It works fine in FF, C & SF but not in IE. 它在FF,C和SF中工作正常,但在IE中则不能。 Cant find the error. 无法找到错误。

IE says: "'undefined' is null or not an object" IE表示:“'undefined'为null或不是对象”

This is the script: 这是脚本:

<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>

I have added ID to "param" and "embed" and also changed the script into this now. 我已经将ID添加到“ param”和“ embed”,并且现在也将脚本更改为此。 But it still doesn't work in IE. 但是它仍然无法在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();
});

This is how I sloved it (might not be prity, but it works): 这就是我的建议(也许不是很礼貌,但确实有效):

$('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();
});

Using the IE debugger shows that this bit is throwing the error: 使用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();

.

Looking at the source in the IE dev tools shows that there aren't any param tags inside the object tag and that the embed tag is goofed up ( </embed/> ). 查看IE dev工具中的源代码,可以发现object标记内没有任何param标记,并且embed标记被弄乱了( </embed/> )。 I'm not sure what's causing this though. 我不确定是什么原因造成的。

[shotInTheDark] <embed> is a self-closing tag and perhaps IE is garbling your non-self-closing tag.[/shotInTheDark] [shotInTheDark] <embed>是一个自动关闭的标签,也许IE正在使您的非自动关闭的标签受到干扰。[/ shotInTheDark]

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM