Fancybox swfobject "Запрошенный контент не может быть загружен. Пожалуйста, повторите попытку позже." - PullRequest
2 голосов
/ 04 декабря 2011

Хорошо, я установил FB 2.0.x, и это действительно приятно.Но у меня есть страница с 4 видео, используя JW Player.В настоящее время, когда вы нажимаете на ссылку, он запускает функцию, чтобы открыть экземпляр fancybox.Fancybox представляет собой набор HTML-кода.Внутри HTML-кода находится div с идентификатором (уникальным для каждого div / video).Затем он добавляет flashvars, params и атрибуты.Ниже приведена функция:

function show_modelpopup(id,title,filepath,base_url) {
    var flashvars = { file: base_url+"uploads/videos/original/"+filepath, autostart:'true', skin: base_url+'js/skin.zip'};
var params = { allowfullscreen:'true', allowscriptaccess:'always', wmode: 'transparent'  };
var attributes = { id: id+'player', name: id+'player' };                             
swfobject.embedSWF(base_url+'mediaplayer/player.swf','container'+id, 480, 385, '9.0.115', 'false', flashvars, params, attributes, flashloaded);
}

После завершения настройки flashvars, params и атрибутов запускается swfobject.embedSWF, а последний параметр - функция, запускаемая после завершения загрузки видео:

function flashloaded() {
    jQuery('#shadowbox_archives').fancybox({
        padding: 10,
        type: 'html',  
        height: 520,
        width: 600
    });
    jQuery.fancybox.open(jQuery('#shadowbox_archives'));
}

И все это работает ОТЛИЧНО.Он загружает окно, и вы видите флэш-плеер.Но когда вы нажимаете кнопку воспроизведения, выдается «Запрошенный контент не может быть загружен. Пожалуйста, повторите попытку позже».Я использую Firebug на Firefox для консольного журнала событий, и я проверил, что путь к файлу FLV правильныйНа самом деле, у меня есть домашняя страница, на которой показано то же видео, но не внутри fancybox.Ниже приведены выходные данные swfobject-js:

Fancybox Popup:

    <object id="45player" width="480" height="385" type="application/x-shockwave-flash" name="45player" data="http://www.green-scene.com/mediaplayer/player.swf">
    <param name="allowfullscreen" value="true">
    <param name="allowscriptaccess" value="always">
    <param name="wmode" value="transparent">
    <param name="flashvars" value="file=http://www.green-scene.com/uploads/videos/original/video_45_1318559535.flv&autostart=true&skin=http://www.green-scene.com/js/skin.zip">
    </object>

Домашняя страница (не fancybox):

    <object id="45player" width="480" height="385" type="application/x-shockwave-flash" name="45player" data="http://www.green-scene.com/mediaplayer/player.swf">
    <param name="allowfullscreen" value="true">
    <param name="allowscriptaccess" value="always">
    <param name="wmode" value="transparent">
    <param name="flashvars" value="file=http://www.green-scene.com/uploads/videos/original/video_45_1318559535.flv&autostart=true&skin=http://www.green-scene.com/js/skin.zip">
    </object>

Домашняя страница не имеет проблем.Но фантазия делает.Так чего мне не хватает?

Я ценю всю вашу помощь!

ОБНОВЛЕНИЕ Интересное открытие только что сделано.Если я нажму кнопку в панели управления плеером, чтобы развернуть ее на весь экран, она перейдет в полноэкранный режим, и я могу нажать кнопку воспроизведения, чтобы воспроизвести ее.Если я нажму кнопку, чтобы вернуться к нормальному размеру (или нажму клавишу esc), он продолжит играть в fancybox.Но затем, если я пытаюсь нажать кнопку «Пауза», она исчезает и выдает мне то же сообщение об ошибке.

ОБНОВЛЕНИЕ # 2 Оказывается, что Internet Explorer нравится вышеупомянутое, и он работает просто отлично.Но Firefox и Safari выдают мне ту же ошибку выше.Это ошеломляет.

ОБНОВЛЕНИЕ # 3 Мне удалось включить автоматическое воспроизведение видео при открытии shadowbox, но теперь вы не можете останавливаться или переходить в полноэкранный режим в Firefox или Safari на Mac.Но IE 8/9 все еще работает просто отлично.

1 Ответ

1 голос
/ 05 декабря 2011

ОК, я посмотрел на вашу страницу и увидел, что каждый большой палец запускает функцию по нажатию:

onclick="return show_modelpoup('//parameters')"

функция show_modelpoup(), которая находится внутри archives.js *Файл 1006 * создает содержимое DIV с помощью id="shadowbox_archives" через jQuery html ()

jQuery('#shadowbox_archives').html();

, но также связывает Fancybox с тем же селектором

jQuery('#shadowbox_archives').fancybox();

... позже та же функция запускает Fancybox (без shadowbox) с методом API $.fancybox.open() ... пока все хорошо!?!?

Здесь происходит то, что фактический контент внутри Fancyboxэто DIV с id="shadowbox_archives" (также привязанный к Fancybox), поэтому каждый раз, когда вы щелкаете по какой-либо части внутри такого DIV, будь то элемент управления SWF или где-либо еще (даже в пустом пространстве), он пытается запустить Fancybox снова (без указаниятого, что должно быть на этот раз), поэтому возникает ошибка " Запрошенный контент не может быть загружен. Пожалуйста, повторите попытку позже. "

Привязка Fancybox к тому же контенту (селектору), который будетОткрытое в Fancybox создает эффект цикла, поэтомувам нужно было бы переформулировать вашу функцию show_modelpoup(), чтобы изменить ее,

... или, может быть, вам просто нужно изменить функцию flashloaded() (внутри show_modelpoup()) таким образом, чтобы она выполнялась напрямуюfire Fancybox после загрузки флэш-содержимого, например:

function flashloaded() {
    jQuery.fancybox({
        href: '#shadowbox_archives',
        padding: 10,
        type: 'html',  
        height: 520,
        width: 600
    });
    // jQuery.fancybox.open(jQuery('#shadowbox_archives'));
}

Обратите внимание, что я закомментировал метод API $.fancybox.open()

UPDATE :

Поскольку вы используете встроенный контент, ваша функция flashloaded() должна выглядеть следующим образом:

function flashloaded() {
    jQuery.fancybox({
        href: '#shadowbox_archives',
        autoSize: false,
        padding: 10,
        type: 'inline',  // no html
        height: 520,
        width: 600
    });
    // jQuery.fancybox.open(jQuery('#shadowbox_archives'));
}
...