Подтвердить что ты не робот

Javascript onclick event over flash object

У меня есть один встроенный флеш-ролик внутри одного div, я помещаю один обработчик события onclick javascript в главный div, но не поймал клик, что не так?

код:

   <div id="top-box-player" onclick="alert('Hi Bananas!');">
     <object width="400" height="300">
        <param name="movie" value="general.swf">
        <embed src="./swf/general.swf" width="400" height="300">
        </embed>
     </object>
   </div>
4b9b3361

Ответ 1

Лучше всего думать о том, что все swf имеют z-порядок бесконечности. Flash находится сверху, и очень мало можно сделать, чтобы остановить это. С другой стороны, если у вас есть доступ к самому коду самого SWF или если вы можете использовать другой swf для загрузки текущего swf, вы сможете использовать несколько различных команд Flash для обращения к JavaScript на странице, (ExternalInterface - ваш лучший выбор).

//This is what your AS code should look like:
import flash.external.ExternalInterface;
import flash.events.MouseEvent;

root.addEventListener( MouseEvent.CLICK, useExternal, true );

function useExternal( event:MouseEvent):void
{
    //swfClickFunction is defined in JavaScript
    ExternalInterface.call( "swfClickFunction" );
}

Другое альтернативное решение, использующее onmousedown вместо onclick, представлено Дарвином ниже.

Ответ 2

Я нашел это на http://progproblems.blogspot.com/2009/08/javascript-onclick-for-flash-embeded.html

  • Задайте параметр wmode transparent. Это позволяет объекту, содержащему флэш, получать javascript onclick.
  • Используйте onmousedown insted onclick. Несмотря на использование wmode transparent, некоторые браузеры все еще не назовут onclick, но они вызывают onmousedown.

Код выглядит следующим образом:

<div onmousedown="clickBanner(1)">
<object>
<param name="movie" value="3.swf">
<param name="wmode" value="transparent" />
<embed wmode=transparent allowfullscreen="true" allowscriptaccess="always" src="3.swf"></embed>
</object>
</div>

Он работает для моих нужд =)

Ответ 3

Вспышка почти наверняка не распространяет событие click на родителя. Ничего не могу сделать, если вы не написали флешку, я полагаю.

Ответ 4

Flash-объект всегда будет захватывать клик, а не автоматически передавать его. вам придется построить эту функциональность - поймайте onclick во flash и вызовите JS-функцию.

что вы пытаетесь выполнить?

Ответ 5

Попробуйте это простое решение, чтобы покрыть флеш с помощью div и поместить событие click на верхний div, чтобы вспышка никогда не захватила мышь.

<div style="position:absolute;top:209px;left:80px;z-index:500;" id="helpvideos"> 
<div style="float:left">
<fb:swf 
    swfbgcolor="FFFFFF"  
    swfsrc='<?php echo SITE_URL;?>swf/3_sidebar.swf'  
    width='600' height='670'
    wmode="transparent"
     />
</div>
<div style="width:600px;height:670px;position:absolute;float:left;z-index:6000;" onclick="document.getElementById('helpvideos').setStyle('display','none');">&nbsp;</div>
</div>

Ответ 6

сделать onclick событие на теге объекта. (тег obejct поддерживает события мыши). затем захватите родительский div через DOM.

Ответ 7

<param name="wmode" value="transparent" />

Это решение для меня. Ну, я реализовал его над AC_RunActiveContent.js в параметрах:

'wmode', 'transparent',

Ницца!!!

Ответ 8

У меня была эта проблема, когда я пытался создавать автоматические динамические баннеры. Если SWF был установлен в режим "opaquecolor", тогда у меня не было доступных кликов - и мне пришлось использовать opaquecolor, потому что некоторые баннеры были испорчены цветами веб-сайтов. Решение, которое я нашел, заключается в том, чтобы установить SWF в "прозрачный" режим, на <div> от z-индекса: 10 и разместить под ним новый <div> одинаковых размеров файла SWF, заполненного opaquecolor SWF. Оба divs в <a> тег. Это сработало.

Example:
    <a href="www.mysite.com">
    <div id="SWF_file_container" style="width:100px; height:40px; z-index:10;">
    <object> .... </object> (adding SWF in TRANSPARENT MODE)
    </div>
    <div id="opaquecolor_of_swf" style="width:100px; height:40px; z-index:2; background-color:#ff0000;"></div>
    </a>