2010-12-16 4 views
0

Вот ситуация: два абсолютно позиционированных слоя, одинаковое положение и размеры. Верхний слой содержит Flash-фильм, охватывающий весь слой, встроенный в wmode="transparent". Нижний слой содержит ссылку HTML, которая в основном видима.Flash wmode transparent - нажмите позади

В странном повороте событий IE7 и IE8 отображают страницу так, как ожидалось: Flash-видео видно и интерактивно; и ссылка ниже фильма частично видима и интерактивна для мыши. В FF3.6 и Chrome 8 ссылка видна, но не доступна.

Пример

http://www.powers1.net/flash-test/test2.html

Код

<html> 
<head> 
<title>test</title> 
</head> 
<body bgcolor="#eeeeee"> 
    <div style="position: absolute; top: 0px; left: 0px; z-index: 1; width: 550px; height: 400px; overflow: hidden"> 
     <p><a href="http://www.google.com">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum</a></p> 
    </div> 
    <div style="position: absolute; top: 0px; left: 0px; z-index: 2"> 
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="550" height="400" id="test" align="middle"> 
    <param name="allowScriptAccess" value="sameDomain" /> 
    <param name="allowFullScreen" value="false" /> 
    <param name="movie" value="test.swf" /><param name="quality" value="high" /><param name="wmode" value="transparent" /><param name="bgcolor" value="#ffffff" /> 
    <embed src="test.swf" quality="high" wmode="transparent" bgcolor="#ffffff" width="550" height="400" name="test" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" /> 
    </object> 
    </div> 
</body> 
</html> 

Вопрос

Как я могу получить FF, Chrome и другие браузеры, чтобы эмулировать быть havior?

ответ

2

wmode = transparent и wmode = opaque are evil. И вот почему:

• Он работает споративно между различными браузерами, когда дело доходит до того, как оно отображает его с контентом. Как вы заметили, иногда на сцене будут пропускаться клики, иногда нет ... иногда вы будете мерцать во вспышке, пытаясь сложить содержимое html поверх вспышки ... и т. Д.

• Он убивает производительность вспышки и перетаскивает с нее машину пользователя (что приводит к увеличению производительности процессора). Это в основном из-за того, что Flash-плеер вынужден отправлять свои направления визуализации через браузер, а не напрямую на GPU ... aaand, он не способен разумно дросселировать свой FPS, когда скрыт от просмотра.

• Случайные, бог-знает-где-они-пришли из ошибок, которые появляются во Flash, когда вы переверните wmode на один из этих ужасных вариантов ... Я видел ошибки рендеринга исходного текста, ошибки рисования фигуры , и внешние внешние ошибки, которые волшебным образом исчезают после удаления параметра wmode или переключения его на одно из других более дружественных значений.

Вы считаете создание гибрида? Тип решения, в котором у вас есть несколько swf-фильмов - их x/y в окне браузера, управляемых HTML? Я предполагаю, что вам все равно придется использовать wmode = transparent, чтобы наложить его поверх остальной части страницы, но тогда вы, по крайней мере, сможете получить доступ к содержимому ниже ...

+0

Закончено повторное внедрение идея без Flash - вместо этого использовала HTML, CSS и прозрачные PNG. – leepowers 2010-12-18 23:02:47

Смежные вопросы