2008-10-14 50 views
2

我有一個包含多個子元素的div,其中一個是Flash影片。如何確保DOM元素在包含Flash對象時觸發鼠標懸停

在滾動此div時,我希望它改變樣式以指示它翻轉。我的問題是,mouseover和mouseout javascript事件並不總是會觸發,特別是當用戶將鼠標移動到flash元素上太快時。

對於我如何確保mouseover事件總是被觸發的任何建議。

我無法將事件添加到Flash動畫本身,因爲它是我沒有源代碼的專有代碼。

此外,我不能在div/image中覆蓋Flash影片,因爲我需要在Flash本身內發生滾動和點擊事件。

回答

1

你可以做的是用一個不可見的div覆蓋flash元素。將onmouseover處理程序放在該div上,並將一行添加到處理程序以隱藏覆蓋div。同時,在窗口中添加一個onmouseover函數 - 當鼠標離開flash元素時,該函數將被觸發。 (我希望)。

  1. 有一個<div>覆蓋您的閃光燈。
  2. 當用戶將鼠標移到它上面時:
    1. 它調用它需要執行的任何功能。
    2. 它隱藏自身,允許與SWF進行正常的交互。
    3. 它把鼠標懸停功能的窗口,這將在:
      1. 再次顯示原始div
      2. 調用您的「鼠標移出」功能。
      3. 刪除window.onmouseover函數。
+0

嗯,這可能是天才,我會給它一個鏡頭 – EvilPuppetMaster 2008-10-14 05:12:03

0

答案很簡單,你不能,鑑於你的約束。

你似乎已經知道了複雜的答案。 Flash影片運行在不觸發常規DOM事件的沙箱中。如果您想在Flash中觸發鼠標事件,則無法使用DOM元素來覆蓋它。如果您無法訪問Flash影片的來源,則無法爲JS世界建立「橋樑」。

我認爲你有一個雙贏局面。

+0

你實際上可以建立'橋樑'。我做了任何Flash編程已經有一段時間了,但我認爲有一個叫做FSCommand的函數可以讓你在頁面上調用JavaScript函數。 – nickf 2008-10-14 14:08:40

2

更改對象/嵌入標籤的WMODE參數不透明

你的代碼應該如下所示。

<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> 
相關問題