Jquery, который не работает в IE - PullRequest
0 голосов
/ 10 января 2011

См .: http://qwer.se/stack/trailer/

Отлично работает в FF, C & SF, но не в IE.Не могу найти ошибку.

IE говорит: «undefined» является нулем или не объектом »

Это скрипт:

<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 в «param» и «embed», а также изменил скрипт на это сейчас.Но это все еще не работает в 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();
});

Вот как я это подставил (может быть, это не было бы честно, но это работает):

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

1 Ответ

0 голосов
/ 10 января 2011

Использование отладчика 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 искажает ваш несамозакрывающийся тег. [/ ShotInTheDark]

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