Flex 的ActionScript和javaScript是可以通過Flex提供的ExternalInterface類進行互動的。在類似portal項目中嵌入flex展現的內容,而期間在操作文檔過程可能需要消耗較長時間,而在此期間期望客戶靜心等待片刻,故而需要禁掉菜單,組織其進入其他模組。故而可以利用ExternalInterface的call方法來禁掉滑鼠的單擊事件。
在html-template\index.template.html中加入要在flex中調用javascript function。
function callNoUse(){self.parent.frames["frame3"].donotUsed();}function callCanUse(){self.parent.frames["frame3"].canUsed();}
這樣flex就可以在需要禁掉按一下滑鼠時在actionscript中執行下列方法
ExternalInterface.call("callNoUse");
而在需要可以單擊時則調用
ExternalInterface.call("callCanUse");
flex與jsp本身是利用frameset整合在一起的,大致布局如下所示
<frameset rows="23%,*" cols="840px" frameborder="no" framespacing="0" style="text-align:MIDDLE;"><frame src="../top.html" name="frame3" frameborder="0" scrolling="no" noresize="noresize"/><frameset rows="*" cols="*,1025,*"><frame/><frame src="<%=path%>/WorkplaceFx.html" name="frame2" frameborder="0" scrolling="no" noresize="noresize" /><frame/></frameset></frameset>
而需要最終執行的javascript方法在frame3中,代碼如下所示。
function donotUsed(){document.onmousedown = nonClick;}function canUsed(){document.onmousedown = null;}function nonClick(e){if(window.event){e = window.event;}if(e.button == 1){alert("請等待...");}}
上述flex調用的方法之所以放到html-template\index.template.html中,是由於該檔案對flex的特殊性,從其名字我們可以看出,其為模板檔案,而改目錄下的所有檔案實際上對部署項目沒有起作用,但在編譯階段swf及對應的html是根據這個模板來產生的。相關代碼放入其中保證其穩定不丟失。簡單說說flex html-template檔案夾的構成,它包含三個檔案和一個檔案夾:
1、index.template.html. HTML封裝檔案。
2、swfobject.js. 一個JavaScript庫,包含運行時載入Flash Player的方法,也包含判斷使用者Flash Player 版本的功能。Flex4 現在是使用swfobject.js 這個開源的JS庫來部署Flash Player 和程式,而Flex3 是用 AC_OE_Tags.js。swfobject.js 相關詳細資料可以參考Adobe官網http://code.google.com/p/swfobject 。
3、playerProductInstall.swf. 一個Flash程式,被用來在高於6.65版本的Flash Player 被安裝後更新使用者系統的Flash Player。
4、history檔案夾,包含用於曆史管理的幾個檔案檔案:
· historyFrame.html. HTML頁面模板,在運行時被首頁的<iframe>載入。
· history.js.一個JavaScript庫,包含了一些可以被historyFrame.html調用的方法。
· history.css. 包含一些 historyFrame需要的樣式