Flash поверх диалогового окна jQuery - PullRequest
17 голосов
/ 04 октября 2009

Я знаю, что многие задавали этот вопрос, но я думаю, что моя ситуация немного отличается.

У меня есть сайт, на котором у меня есть реклама, которая скрыта во Flash из-за проблем совместимости с xhtml / html. Но элементы flash находятся поверх моих диалогов jQuery, что не идеально.

Некоторые решения предлагают установить wmode на непрозрачный, но я не могу, потому что мои объявления представляют собой сценарии, которые выводят flash-элементы.

Другое решение предлагало скрывать рекламу при отображении диалогового окна. Поэтому мой вопрос: есть ли способ поместить флэш-контент в мои диалоговые окна jQuery, когда они видны и не изменяя флэш-код?

С наилучшими пожеланиями, Лассе Эспехолт

Обновление: Теперь я вновь открыл вопрос с вознаграждением. На данный момент я скрываю каждое объявление Flash в «диалоге показа». Но это все еще не оптимальное решение. Итак, я ищу скрипт, который может сделать каждую Flash-анимацию непрозрачной (решение jQuery было бы лучше, но подойдет простое решение JavaScript). Или если будет другое решение, не обсуждаемое в этом вопросе, я буду рад услышать об этом:)

Обновление 2: Пока что я сделал этот скрипт:

function opaqueAllFlashMovies() {
    // Embed Flash movies
    $('embed[wmode!="opaque"]').attr('wmode', 'opaque').wrap('<div>');

    // Object flash movies with a wmode param
    $('object[classid$="-444553540000"] parem[wmode]').attr('value', 'opaque');
    // Object flash movies without a wmode param
    $('object[classid$="-444553540000"]').not('param[wmode]').append('<param name=\'wmode\' value=\'opaque\'/>').wrap('<div>');
}

, который работает в FF и Chrome, но не в IE. Видимо, .append не удается. Есть идеи?

Ответы [ 5 ]

13 голосов
/ 04 октября 2009

Вы не можете поместить HTML перед Flash, если не установите wmode в непрозрачный (или прозрачный).

При использовании wmode по умолчанию («окно») Flash Player берет на себя всю визуализацию и взаимодействие с пользователем в своей области. Таким образом, браузер не может отображать HTML в этой области. Что делает wmode = "opaque" (или wmode = "transparent"), так это отключает это поведение по умолчанию и интегрирует область Flash Player в обычные рендеринг и наслоения браузеров и т. Д.

Но вам не нужно изменять какой-либо контент Flash для установки wmode, поскольку это делается в HTML (или с помощью SWFObject или другого скрипта, который вставляет элемент объекта Flash), так что если у вас есть контроль над скриптами, которые выводят flash elements ", о которых вы упомянули, вы можете позаботиться о настройке wmode там.

2 голосов
/ 15 марта 2011

Я думаю, у меня есть решение. Используя диалог jquery-ui, потратил часы и часы, пытаясь это выяснить - у меня получилось,

Логика заключалась в том, что если я не могу заставить JQuery выйти вперед, верните весь флэш-контент. исследование привело меня к этой ссылке - наконец-то, наконец, это сработало.

Как программно установить все , чтобы wmode был непрозрачным?

function makeObjectsOpaque3() {
    var elementToAppend = document.createElement('param');
    elementToAppend.setAttribute('name', 'wmode');
    elementToAppend.setAttribute('value', 'opaque');
    var objects = document.getElementsByTagName('object');
    for(var i = 0; i < objects.length; i++) {
        var newObject = objects[i].cloneNode(true);
        elementToAppend = elementToAppend.cloneNode(true);
        newObject.appendChild(elementToAppend);
        objects[i].parentNode.replaceChild(newObject, objects[i]);
    }
}

window.onload = makeObjectsOpaque3;

и

if(window.onload) {
    var onLoad = window.onload;
    window.onload = function() {
        onLoad();
        makeObjectsOpaque3();
    };
} else {
    window.onload = makeObjectsOpaque3;
}
1 голос
/ 22 февраля 2011

Я только что прочитал этот пост и попытался добавить параметр wmode = "opaque" в тег объекта. Это работает для IE 8. Извините, если мой пост слишком поздно.

1 голос
/ 04 октября 2009

Как насчет ручной настройки wmode на непрозрачность с помощью javascript после того, как флеш-память уже загружена?

0 голосов
/ 27 апреля 2011

Поиск в Google для "iframe shim". По сути, размещение iframe позади html приведет к его переполнению флэш-содержимым (игнорируя настройки wmode).

Пока, пока

...