本文接續著「跨網域請求(一) - Cross-Domain Script Tag」來繼續實作另一種透過Flash Plug-In的作法~
這種作法最大的缺點就是需要仰賴一個Plug-In的方式~
但隨著Flash Player Statistics所統計全世界可上網的電腦有安裝Flash Player就達到98.8%~ 所以此缺點看似影響並非太大~ 端看客官們如何取捨~
下述範例「flash.php」、「crossdomain.xml」須放在同一個網域之下
flash.php
<div><?=rand()+rand()?></div>
crossdomain.xml
這個「crossdomain.xml」須放置在根目錄下
<?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*" /> </cross-domain-policy>
ActionScript 3
這裡的ActionScript範例會執行外部的資源請求,並將請求所得到的值利用ExternalInterface呼叫「callJS()」的JavaScript,有興趣的人玩玩看吧~
var loader:URLLoader = new URLLoader(); sendRequest(); function sendRequest():void { var request:URLRequest = new URLRequest("http://163.17.142.204/csproxy/flash.php?"+Math.random()); request.method = URLRequestMethod.GET; loader.dataFormat = URLLoaderDataFormat.TEXT; loader.addEventListener(Event.COMPLETE, loader_complete); loader.load(request); } function loader_complete(e:Event):void { var example:RegExp = new RegExp(/<div>(.*)<\/div>/); var trans = example.exec(loader.data); ExternalInterface.call("callJS",trans[1]); }
JavaScript
function callJS(result) { alert(result); }