Flash поверх диалогового окна jQuery

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

У меня есть сайт, где у меня есть реклама, которая скрыта во 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 ответов

Решение

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

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

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

Я думаю, у меня есть решение. Используя диалоговое окно 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;
}

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

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

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

Пока-пока

Другие вопросы по тегам