У меня есть веб-сайт, на котором запущены jQuery и SWFObject. Когда страница загружается, она устанавливает 2-секундный тайм-аут, а затем запускает экземпляр SWFObject для загрузки фильма. Когда фильм заканчивается, его обратный вызов игрока в JS для запуска другого фильма. Другой фильм загружается нормально и играет. Когда воспроизведение закончится, второй фильм также должен вызвать другой обратный вызов, но это не так. Проблема в том, что во втором фильме init он должен очистить предыдущий элемент и сбросить его, чтобы SWFObject мог повторно использовать его, и даже если это то, что происходит в DOM, SWFObject не использует элемент повторно. , Я думаю, что это вызвано тем, что jQuery все еще каким-то образом удерживает элемент, даже если он удален из DOM, который выбрасывает IE, когда SWFObject пытается использовать его повторно.
Я прикрепляю свой код, так что, возможно, кто-то сможет определить, где он не работает, или если у кого-нибудь есть предложения о том, как заставить jQuery очистить элемент как из DOM, так и из объекта jQuery.
Код может показаться немного неорганизованным, но я впервые пишу о переполнении стека, поэтому я не знаю, как заставить его публиковать весь код, правильно отформатированный ...
Заранее спасибо!
var Shadow;
var ActorWrapper, VideoWrapper;
var Actor, Video;
var Navigation;
var Flash, Random;
var t;
$(document).ready(function () {
if (jQuery.browser.msie && jQuery.browser.version <= 6) {
$(".Body").supersleight();
};
t = window.setTimeout(function () {
window.clearTimeout(t);
Flash = $("#Flash");
if (Boolean(Flash.val())) {
Shadow = $("#Shadow");
ActorWrapper = $("#ActorWrapper");
Actor = $("#Actor");
VideoWrapper = $("#VideoWrapper");
Video = $("#Video");
Random = $("#Random");
Navigation = $(".Navigation");
VideoWrapper.css({
left: parseInt(($(document).width() - 400) / 2),
top: parseInt(($(window).height() - 300) / 2)
});
IncomingActor();
};
}, 2000);
});
var IncomingActor = function () {
ActorWrapper.css({
display: "block",
height: 325,
left: parseInt((($(window).width() - 714) / 2) - 46),
width: 180
});
swfobject.embedSWF("/Resources/Flash/Player.swf", "Actor", "180", "325", "9", null, {
Path: "Amy-1.flv",
Callback: "Vid",
Buffer: 2,
Width: 180,
Height: 325
}, {
play: true,
loop: false,
quality: "best",
wmode: "transparent",
swliveconnect: true,
allowscriptaccess: "always"
});
Navigation.css({
textAlign: "right"
});
};
var Vid = function () {
$("#Actor").remove();
$("#ActorWrapper").html("<div id=\"Actor\"></div>");
VideoWrapper.css({
display: "block"
});
Shadow.css({
display: "block",
height: $(document).height(),
width: $(document).width()
}).animate({
opacity: 0.6
}, 1000).click(function () {
VideoWrapper.animate({
opacity: 0
}, 500);
t = window.setTimeout(function () {
window.clearTimeout(t);
VideoWrapper.css({
display: "none"
});
Shadow.animate({
opacity: 0
}, 500);
t = window.setTimeout(function () {
window.clearTimeout(t);
Shadow.css({
display: "none"
});
}, 500);
}, 500);
});
swfobject.embedSWF("/Resources/Flash/Player.swf", "Video", "400", "300", "9", null, {
Path: (Random.val() + ".flv"),
Callback: "OutgoingActor",
Buffer: 2,
Width: 400,
Height: 300
}, {
play: true,
loop: false,
quality: "best",
wmode: "transparent",
swliveconnect: true,
allowscriptaccess: "always"
});
VideoWrapper.animate({
opacity: 1
});
Navigation.css({
textAlign: "center"
});
};
var OutgoingActor = function () {
ActorWrapper.css({
left: (parseInt(ActorWrapper.css("left")) + 10)
});
VideoWrapper.animate({
opacity: 0
}, 500);
t = window.setTimeout(function () {
window.clearTimeout(t);
VideoWrapper.css({
display: "none"
});
Shadow.animate({
opacity: 0
}, 500);
t = window.setTimeout(function () {
window.clearTimeout(t);
Shadow.css({
display: "none"
});
}, 500);
}, 500);
swfobject.embedSWF("/Resources/Flash/Player.swf", "Actor", "180", "325", "9", null, {
Path: "Amy-2.flv",
Callback: "RemoveOutgoingActor",
Buffer: 2,
Width: 180,
Height: 325
}, {
play: true,
loop: false,
quality: "best",
wmode: "transparent",
swliveconnect: true,
allowscriptaccess: "always"
});
Navigation.css({
textAlign: "right"
});
};