Как да гарантирате, че DOM елемент задейства преминаване на мишката, когато съдържа Flash обект

Имам div, който съдържа няколко дъщерни елемента, един от които е флаш филм.

Когато превъртя този div, искам той да промени стила, за да покаже, че е преметнат. Проблемът ми е, че събитията mouseover и mouseout не винаги се задействат, особено ако потребителят премести мишката върху флаш елемента твърде бързо.

Всякакви предложения за това как мога да гарантирам, че събитие mouseover винаги се задейства.

Не мога да добавя събитие към самия флаш филм, защото това е патентован код, за който нямам източника.

Също така не мога да покрия флаш филма в div/изображение, защото имам нужда от събития с преобръщане и щракване, които да се появят в самата флаш.


person EvilPuppetMaster    schedule 14.10.2008    source източник


Отговори (3)


Променете параметъра wmode на тага за обект/вграждане на opaque.

Вашият код трябва да изглежда по следния начин.

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia
.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="800" height="600">
    <param name="movie" value="movie.swf">
    <param name="wmode" value="opaque">
    <embed src="movie.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="800" height="600"></embed>
</object>
person Claudio    schedule 21.10.2008

Това, което можете да направите, е да покриете флаш елемента с невидим div. Поставете вашия манипулатор onmouseover върху този div и добавете ред към манипулатора, за да скриете покриващия div. В същото време добавете функция onmouseover към прозореца - това трябва да се задейства, когато мишката напусне флаш елемента. (Надявам се).

  1. Има <div>, който покрива светкавицата ви.
  2. When the user mouses over it:
    1. It calls whatever function it needs to do.
    2. Той се скрива, позволявайки нормално взаимодействие със SWF.
    3. It places a mouseover function on the window which will:
      1. Show the original div again.
      2. Извиква вашата функция "mouseout".
      3. Премахва функцията window.onmouseover.
person nickf    schedule 14.10.2008
comment
хм, това може да е гениално, ще го пробвам - person EvilPuppetMaster; 14.10.2008

Простият отговор е, че не можете, предвид вашите ограничения.

Сложният отговор май вече го знаете. Flash филмът се изпълнява в пясъчна среда, която не задейства редовни DOM събития. Ако искате да задействате събития на мишката във флаш, не можете да го покриете с DOM елементи. Ако нямате достъп до източника на флаш филма, не можете да изградите „мостове“ към света на JS.

Мисля, че нямате печеливша ситуация.

person Rakesh Pai    schedule 14.10.2008
comment
всъщност можете да изградите „мостове“. Измина известно време, откакто програмирах с Flash, но мисля, че има функция, наречена FSCommand, която ви позволява да извиквате javascript функции на страницата. - person nickf; 14.10.2008