Вспышка в диалоговом окне jQuery
Я знаю, что многие задавали этот вопрос, но я думаю, что моя ситуация немного отличается.
У меня есть сайт, на котором у меня есть некоторые объявления, которые скрыты в Flash из-за проблем с совместимостью xhtml/html. Но flash-элементы находятся поверх диалогов jQuery, которые не идеальны.
Некоторые решения предложили установить wmode на непрозрачный, но я не могу, потому что мои объявления - это скрипты, которые выводят элементы flash.
Еще одно решение предложило скрывать объявления, когда отображается диалог. Итак, мой вопрос: есть ли способ разместить flash-контент за мои диалоги jQuery, пока они видны и не изменяют код флэш-памяти?
С уважением,
Лассе Эспехольт
Update:
Теперь я снова заново задал вопрос с щедростью. На данный момент я скрываю каждое Flash-объявление в диалоговом окне "show dialog". Но это все еще не оптимальное решение. Итак, я ищу script, который может сделать каждую флеш-анимацию непрозрачной (решение jQuery было бы самым приятным, но простое решение для JavaScript). Или, если в этом вопросе не будет обсуждаться другое решение, я буду рад услышать об этом:)
Обновление 2:
До сих пор я сделал это script:
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
терпит неудачу. Любые идеи?
Ответы
Ответ 1
Вы не можете поместить HTML перед Flash, если вы не установите wmode непрозрачным (или прозрачным).
При использовании wmode по умолчанию ( "окно" ) Flash Player берет на себя всю визуализацию и взаимодействие с пользователем в своей области. Таким образом, браузер не может отображать HTML в этой области. То, что wmode = "opaque" (или wmode = "transparent" ), заключается в том, что оно отключает это поведение по умолчанию, и оно объединяет область Flash Player в обычном рендеринге и расслоении браузеров и т.д.
Но вам не нужно изменять какой-либо Flash-контент для установки wmode, поскольку он выполняется в HTML (или через SWFObject или другой script, который вставляет элемент объекта Flash), поэтому, если у вас есть контроль над "скриптами" который выводит элементы вспышки ", о котором вы упоминаете, вы можете позаботиться о настройке wmode.
Ответ 2
Я думаю, у меня есть решение. Используя диалог jquery-ui, потраченные часы и часы, пытаясь понять это, работали на меня,
Логика была, если я не могу заставить jquery идти впереди, вернуть весь флэш-контент. исследование привлекло меня к этой ссылке - наконец, наконец, это сработало.
Как программно установить для всех <object> , чтобы 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;
}
Ответ 3
Как насчет ручной настройки wmode на непрозрачный с javascript после того, как флэш уже загружен?
Ответ 4
Я только что прочитал это сообщение и попытался добавить параметр параметра wmode = "opaque" в тег объекта. Он работает для IE 8. Прошу прощения, если мой пост слишком поздно.
Ответ 5
Найдите google для "iframe shim".
В принципе, помещая iframe за html, он перенесет содержимое Flash (игнорируя настройки wmode).
До свидания