標籤:
搞了幾個小時後,才發現,之前走的路是錯的。
今天在Firefox瀏覽器上測試一個javascript調用Flash中的一個對象的方法時遇到問題了,
一搞就整整搞了一個下午。
我記得之前我用Flash8的時候沒有遇到過這樣的問題。
我的程式大概是這樣,我用Flash製作了一個菜單,預設情況下,開啟網頁時,這個菜單隱藏,當滑鼠放在一個小表徵圖上後,這個菜單顯示出來,並且會根據當前的網頁資料情況,顯示菜單中的幾項,同時隱藏幾項不需要顯示的功能表項目。
我在Flash中使用ExternalInterface.addCallback 註冊了一個方法名叫:setMenuItemVisible(b:Boolean)
打算在網頁中的javascript中調用。
可誰知程式寫好後,在IE瀏覽器下運行一切正常,但在Firefox上老是提示錯誤:
無法在javascript中調用 setMenuItemVisible() 方法。
我開始到百度去搜尋,找了一個多小時後,終於找到了一篇檔案:
http://www.coolcode.cn/show-291-1.html
我把這篇內容在我的百度空間收藏了一下:
http://hi.baidu.com/personnel/blog/item/8c04cd119effe919b8127b47.html
原來因為瀏覽器的原因,如果在IE以外的大多數瀏覽器上執行javascript調用Flash中的函數時,一般要在 window.onload=function(){載入Flash}
不然,在Flash中註冊的一些對外的函數將無法在javascript中調用。
本來以為到這裡原因找到了,可是接下來又遇到了一個非常頭痛的問題。
因為我的Flash是先隱藏,在javascript觸發事件後,才顯示,我使用的是
flash.style.display="none";
flash.style.display="";
在Firefox上測試的時候發現,當在這顯示和隱藏兩種狀態下轉換的時候,每次Flash都會重新載入一次,真暈!
後來又到百度搜尋了一下,找到了這麼一篇文章,現在我收藏了一下:
http://hi.baidu.com/personnel/blog/item/a8f40fb3025decaed8335a43.html
最終重寫了Flash代碼,因為之前的代碼邏輯上在Firefox上不是好辦法。
2009-08-12
javascript調用Flash裡對象的方法(函數)搞了五個小時。