Adobe Air & Adobe Flex & ActionScript & RIA & User Experience
在 Flex/Flash 中,滑鼠放在已啟用 HTML 功能之文字欄位中的超連結上,并不能像在瀏覽器的 status bar 看到其超連結的信息,我們無法判斷點下去之后跳轉的是否為一個值得信任和安全的網站,Flex/Flash 內的超連結安全問題由此而生,如何跟用戶良好的交互又是另外一個棘手的問題,下面是我的一個比較典型的解決方案。
獲取網址
目前為止,滑鼠放在 Flex/Flash 內的已啟用 HTML 功能之文字欄位中不會產生相應的事件,而按一下之后,會產生 flash.events.TextEvent.LINK 的事件,並且其中的 URL 是以 “event:” 開始時,便會傳送。 URL 在「event:」之後的其餘部分將會放置在 LINK 事件的文字屬性中。因此,可以在 TextEvent.LINK 上下功夫,值得注意的是,如果超連接不使用”event:”開頭,我們是無法獲取其中的URL的。
content.textArea.addEventListener(TextEvent.LINK, linkHandler);
建立信任網址列表
建立一個值得信任的網站列表,可以是一個 Array 或者一個 XML,一般值得信任的列表就應該是自己的網站。不過例子中我加了 Adobe,XD。
private var trustSites:Array = [{label: "RichMedia+", data: 'richmediaplus.com'}, {label: "Adobe", data: 'adobe.com'}];
測試獲取的網址
測試獲取的網址是否在信任網址中,可以通過 URLUtil.getServerName(url:String):String 的方式可以獲取服務器名稱,然后通過正則表達式測試是否屬于信任網址。
private function isTrustWebSites(site:String):Boolean { var lgh:int = trustSites.length; for(var i:int = 0; i < lgh; i++) { var regStr:String = trustSites[i].data + "$" var reg:RegExp = new RegExp(regStr, "i") if(reg.test(URLUtil.getServerName(site))) return true; } return false; }
對不信任網址進行相關提示
對于屬于信任列表內的網站進行直接跳轉,而對于不屬于信任列表里面的網址將進行提示進行跳轉,申明“此網頁不屬于 RichMedia+ 網站,RichMedia+ 不保證其安全性”。用戶信任可以繼續選擇跳轉,不信任則可以關閉對話框。如果合適的話,更加可以添加『以后不再提示』的對話框,方便用戶選擇。
private var ui:HtmlTooltip = new HtmlTooltip(); private function linkHandler(event:TextEvent):void { if(isTrustWebSites(event.text)) { navigateToURL(new URLRequest(event.text), "_blank"); } else { ui.setFocus(); PopUpManager.addPopUp(ui, this, true); ui.url = event.text; PopUpManager.centerPopUp(ui); } }
SourceView:http://code.richmediaplus.com/TextCompHtmlLink/srcview/index.html
Related posts:
Wisely
October 20th, 2009 at 9:53 pm
Great!!