本文接續著「跨網域請求(一) - 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);
}