適用於 Adobe® Flash® Platform 的 ActionScript® 3.0 參考
首頁  |  隱藏套件和類別清單 |  套件  |  類別  |  新增內容  |  索引  |  附錄  |  為什麼顯示英文?
篩選: 從伺服器擷取資料...
從伺服器擷取資料...
 

套件 flash.net 


flash.net 套件包含可用來開啟新瀏覽器視窗、傳送 URL 請求至伺服器以及處理類別別名的套件層級函數。
公用方法
 函數定義自
  
查閱之前已經透過呼叫 registerClassAlias() 方法註冊別名的類別。
flash.net
  
navigateToURL(request:URLRequest, window:String = null):void
會開啟或取代應用程式中的視窗,而該應用程式包含 Flash Player 容器 (通常是指瀏覽器)。
flash.net
  
registerClassAlias(aliasName:String, classObject:Class):void
當物件以 Action Message Format (AMF) 編碼時,會保留該物件的類別 (類型)。
flash.net
  
會將 URL 要求傳送至伺服器,但忽略任何回應。
flash.net
函數詳細資訊

getClassByAlias

()函數
public function getClassByAlias(aliasName:String):Class

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會查閱之前已經透過呼叫 registerClassAlias() 方法註冊別名的類別。

這個方法不會與 flash.utils.getDefinitionByName() 方法互動。

參數

aliasName:String — 要尋找的別名。

傳回值
Class — 與指定別名相關聯的類別。 如果找不到,就會擲回例外。

擲回值
ReferenceError — 尚未註冊此別名。

相關 API 元素

navigateToURL

()函數 
public function navigateToURL(request:URLRequest, window:String = null):void

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

開啟或取代應用程式中的視窗,而該應用程式包含 Flash Player 容器 (通常是指瀏覽器)。在 Adobe AIR 中,此函數會在預設的系統網頁瀏覽器中開啟 URL

安全性重要注意事項

開發人員常會將其取自外部來源 (如 FlashVars) 的 URL 值傳遞給 navigateToURL() 函數。攻擊者很可能試圖操控這些外部來源,進而從事跨網站指令碼之類的攻擊。因此,開發人員應先驗證所有的 URL,然後再傳遞這些值給 navigateToURL() 函數。

根據應用程式整體內部使用 URL 的狀況而定,合宜的 URL 資料驗證方式各有不同。最常見的資料驗證技術包括驗證 URL 配置是否得當。例如,若不慎允許 javascript: 這類 URL,可能就會形成跨網站指令碼。驗證 URL 位於您的網域內,可確保 SWF 檔不致公開而遭他人利用重新導向方式進行網路釣魚攻擊。基於強化安全性,您亦可選擇驗證 URL 的路徑,以及驗證 URL 是否遵循 RFC 原則的規範。

例如,下列程式碼示範執行資料驗證的簡易範例,拒絕了任何不是以 http:// 或 https:// 開頭的 URL,並且驗證該 URL 的網域名稱是否為您的網域。此範例未必適用於所有的網路應用程式,您應考慮視需要另對 URL 進行其他檢查。

     // AS3 Regular expression pattern match for URLs that start with http:// and https:// plus your domain name.
     function checkProtocol (flashVarURL:String):Boolean {
        // Get the domain name for the SWF if it is not known at compile time.
        // If the domain is known at compile time, then the following two lines can be replaced with a hard coded string.
        var my_lc:LocalConnection = new LocalConnection();
        var domainName:String = my_lc.domain;
        // Build the RegEx to test the URL.
        // This RegEx assumes that there is at least one "/" after the
        // domain. http://www.mysite.com will not match.
        var pattern:RegExp = new RegExp("^http[s]?\:\\/\\/([^\\/]+)\\/");
        var result:Object = pattern.exec(flashVarURL);
        if (result == null || result[1] != domainName || flashVarURL.length >= 4096) {
          return (false);
        }
        return (true);
     }  
     
      

若為瀏覽器中執行的「本機」內容,則 SWF 檔和包含網頁 (如果有) 必須是位於「本機信任」安全執行程序,才允許呼叫 navigateToURL() 方法透過第一個參數傳遞 URLRequest 物件來指定 "javascript:" 虛擬通訊協定。有些瀏覽器不支援 javascript 通訊協定與 navigateToURL() 方法搭配使用。請考慮改用 ExternalInterface API 的 call() 方法,以便在包含的 HTML 頁面中叫用 JavaScript 方法。

在 Flash Player 以及 Adobe AIR 的非應用程式安全執行程序中,您無法連線到常用的保留連接埠。完整的封鎖連接埠清單,請參閱在「ActionScript 3.0 開發人員指南」中的「限制網路 API」

在瀏覽器中執行的 Flash Player 10 和更新版本中,使用這個方法以程式設計的方式開啟彈出式視窗可能不會成功。各種瀏覽器 (和瀏覽器組態設定) 可能隨時封鎖彈出式視窗,所以無法保證彈出式視窗一定會出現。但為了確保最大的成功機會,最好只在為了回應使用者動作 (例如,按下滑鼠或按下按鍵事件的事件處理常式中) 而直接執行的程式碼中使用這個方法來開啟彈出式視窗。

在 Flash Player 10 和更新版本中,如果您使用包含上載 (由 POST 主體中 "content-disposition" 檔頭的 "filename" 參數指示) 的多部分 Content-Type (例如 "multipart/form-data"),POST 作業會受限於上載所套用的安全性規則:

  • 必須執行 POST 作業,以回應使用者啟動的動作 (例如按下滑鼠或按下按鍵)。
  • 如果 POST 作業會跨越網域 (POST 目標與傳送 POST 要求的 SWF 檔不在同一部伺服器上),目標伺服器必須提供允許跨網域存取的 URL 原則。

此外,多部分的 Content-Type 語法必須有效 (符合 RFC2046 標準)。如果語法無效,POST 作業會受限於上載所套用的安全性規則。

在 AIR 中,行動平台上支援 sms: 與 tel: URI 配置。Android 上支援 vipaccess:、connectpro: 及 market: URI 配置。URL 語法會隨著平台慣例而異。例如,在 Android 上,URI 配置必須是小寫。當您使用其中一種配置瀏覽至某個 URL 時,執行階段會在預設應用程式中開啟 URL 以處理配置。因此,瀏覽至 tel:+5555555555 會開啟電話撥號程式,其中已輸入指定的號碼。您必須有個別的應用程式或公用程式 (像是電話撥號程式),才能處理 URL。

下列程式碼會顯示如何在 Android 上叫用 VIP Access 和 Connect Pro 應用程式:

       //Invoke the VIP Access Application.
       navigateToURL(new URLRequest("vipaccess://com.verisign.mvip.main?action=securitycode"));
     
       //Invoke the Connect Pro Application.
       navigateToURL(new URLRequest("connectpro://"));
     
      

參數

request:URLRequest — 指定要瀏覽之 URL 的 URLRequest 物件。

針對 Adobe AIR 中執行的內容,當您使用 navigateToURL() 函數時,執行階段會將使用 POST 方法的 URLRequest (其 method 屬性設為 URLRequestMethod.POST 者) 視同使用 GET 方法的物件。

 
window:String (default = null) — 要在其中顯示 request 參數指定之文件的瀏覽器視窗或 HTML 頁框。 您可以輸入特定視窗的名稱,或使用下列其中一個值:
  • "_self" 會指定目前視窗中的目前頁框。
  • "_blank" 會指定新的視窗。
  • "_parent" 會指定目前頁框的父輩。
  • "_top" 會指定目前視窗中最上層的頁框。

如果您並未指定此參數的值,就會建立新的空白視窗。 在獨立播放程式中,您可以指定新的 ("_blank") 視窗或具名的視窗。 其他值則不適用。

注意:如果於具有檔案系統的本機安全執行程序中執行的 SWF 檔中的程式碼呼叫 navigateToURL() 函數,並為 window 參數指定自訂視窗名稱,就以隨機方式指定視窗名稱。 表單 "_flashXXXXXXXX" 中的名稱,其中每一個 X 分別代表一個隨機十六進位數字。 在相同的工作階段中 (直到您關閉所包含的瀏覽器視窗為止),如果您再次呼叫該函數,並且為 window 參數指定相同的名稱,則仍會使用相同的隨機字串。


擲回值
IOError request 物件的 digest 屬性不是 null。只有在載入 SWZ 檔 (Adobe 平台組件) 過程中用於呼叫 URLLoader.load() 方法時,才需設定 URLRequest 物件的 digest 屬性。
 
SecurityError — 在 Flash Player (以及 Adobe AIR 的非應用程式安全執行程序內容中),這項錯誤會在下列情況下擲出:
  • 本機不受信任的 SWF 檔可能無法與網際網路進行通訊。您可以透過將此 SWF 檔重新分類為「具有網路連線的本機」或受信任,避免此情況。
  • 瀏覽作業嘗試評估以程式碼編寫的虛擬 URL,不過內含的文件 (通常是指瀏覽器中的 HTML 文件) 是來自您無法存取的安全執行程序。 您可以在內含文件中指定 allowScriptAccess="always",避免此情況發生。
  • 當 HTML 檔與 SWF 檔的網域不符時,如果 SWF 檔包含在 allowScriptAccess 設定為 "none""sameDomain" 的 HTML 網頁中,您就無法瀏覽特定視窗 "_self""_top""_parent"
  • 您無法從位於本機與系統檔案安全執行程序中的 SWF 檔,瀏覽具有非預設名稱的視窗。
  • 您不可以連接到常用的保留連接埠。完整的封鎖連接埠清單,請參閱在「ActionScript 3.0 開發人員指南」中的「限制網路 API」
 
Error — 如果不是為了回應使用者的動作 (例如滑鼠事件或按下按鍵事件) 而呼叫方法。這項需求只會套用至 Flash Player 的內容以及 Adobe AIR 的非應用程式安全執行程序內容。

更多範例

相關 API 元素


範例  ( 如何使用本範例 )

下列範例會在新的瀏覽視窗中開啟 http://www.adobe.com 這個 URL,並將有關使用者工作階段的資料 (在 URLVariables 物件中捕捉) 傳遞給網路伺服器。
package {
    import flash.display.Sprite;
    import flash.net.navigateToURL;
    import flash.net.URLRequest;
    import flash.net.URLVariables;

    public class NavigateToURLExample extends Sprite {

        public function NavigateToURLExample() {
            var url:String = "http://www.adobe.com";
            var variables:URLVariables = new URLVariables();
            variables.exampleSessionId = new Date().getTime();
            variables.exampleUserLabel = "Your Name";
            var request:URLRequest = new URLRequest(url);
            request.data = variables;
            try {            
                navigateToURL(request);
            }
            catch (e:Error) {
                // handle error here
            }
        }
    }
}

下列範例說明您如何使用 navigateToURL() 方法從 Flash Player 開啟新的瀏覽器視窗。範例由 ActionScriptExamples.com 提供。
// Requires
// - Button symbol on Stage (or a display object, such as a MovieClip) with instance name "buttonSymbol"
//
buttonSymbol.addEventListener(MouseEvent.CLICK, buttonSymbol_click);
 
function buttonSymbol_click(evt:MouseEvent):void {
    var req:URLRequest = new URLRequest("http://www.adobe.com/");
    navigateToURL(req, "_blank");
}

下列範例會說明使用特定數字啟動裝置電話撥號程式的語法。
var request:URLRequest = new URLRequest( "tel:+5555555555" );
navigateToURL( request );

下列範例會說明使用特定收件者啟動裝置文字訊息應用程式的語法。
var request:URLRequest = new URLRequest( "sms:+5555555555" );
navigateToURL( request );

下列範例會說明啟動 Android Market 應用程式的語法。搜尋參數會設定為尋找 Flash Player 應用程式。
var request:URLRequest = new URLRequest( "market://search?q=pname:com.adobe.flashplayer" );
navigateToURL( request );

registerClassAlias

()函數 
public function registerClassAlias(aliasName:String, classObject:Class):void

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

當物件以 Action Message Format (AMF) 編碼時,會保留該物件的類別 (類型)。 當您將物件編碼成 AMF 時,這個函數就會儲存其類別的別名,以便解碼物件時可以復原此類別。 如果編碼內容並未註冊物件之類別的別名,此物件就會編碼成匿名物件。 同樣地,如果解碼內容並未註冊相同的別名,就會針對解碼資料建立匿名物件。

LocalConnection、ByteArray、SharedObject、NetConnection 和 NetStream 都是以 AMF 編碼物件的類別範例。

編碼和解碼內容不需要針對別名使用相同的類別。如果目標類別包含來源類別序列化的所有成員,它們就可以根據目的來變更類別。

參數

aliasName:String — 要使用的別名。
 
classObject:Class — 與指定別名相關聯的類別。


擲回值
TypeError — 如果任一個參數為 null 的話。

相關 API 元素


範例  ( 如何使用本範例 )

這個範例會使用 registerClassAlias() 函數為類別 ExampleClass 註冊一個別名 (com.example.eg)。 由於是為類別註冊別名,因此就能將物件還原序列化成 ExampleClass 的實體,而程式碼也會輸出 true。 如果將 registerClassAlias() 呼叫移除,程式碼就會輸出 false
package {
    import flash.display.Sprite;
    import flash.net.registerClassAlias;
    import flash.utils.ByteArray;

    public class RegisterClassAliasExample extends Sprite {
        public function RegisterClassAliasExample() {
            registerClassAlias("com.example.eg", ExampleClass);
            var eg1:ExampleClass = new ExampleClass();
            var ba:ByteArray = new ByteArray();
            ba.writeObject(eg1);
            ba.position = 0;
            var eg2:* = ba.readObject();
            trace(eg2 is ExampleClass); // true
        }
    }
}

class ExampleClass {}

sendToURL

()函數 
public function sendToURL(request:URLRequest):void

語言版本: ActionScript 3.0
執行階段版本: AIR 1.0, Flash Player 9, Flash Lite 4

會將 URL 要求傳送至伺服器,但忽略任何回應。

若要檢查伺服器回應,請改用 URLLoader.load() 方法。

您不可以連接到常用的保留連接埠。完整的封鎖連接埠清單,請參閱在「ActionScript 3.0 開發人員指南」中的「限制網路 API」

您可以拒絕 SWF 檔使用這個方法,方式是在包含 SWF 內容的 HTML 網頁中,設定 objectembed 標籤的 allowNetworking 參數。

在 Flash Player 10 和更新版本中,如果您使用包含上載 (由 POST 主體中 "content-disposition" 檔頭的 "filename" 參數指示) 的多部分 Content-Type (例如 "multipart/form-data"),POST 作業會受限於上載所套用的安全性規則:

  • 必須執行 POST 作業,以回應使用者啟動的動作 (例如按下滑鼠或按下按鍵)。
  • 如果 POST 作業會跨越網域 (POST 目標與傳送 POST 要求的 SWF 檔不在同一部伺服器上),目標伺服器必須提供允許跨網域存取的 URL 原則。

此外,多部分的 Content-Type 語法必須有效 (符合 RFC2046 標準)。如果語法無效,POST 作業會受限於上載所套用的安全性規則。

如需安全性詳細資訊,請參閱「Flash Player 開發人員中心」主題:安全性

參數

request:URLRequest — URLRequest 物件,指定要做為資料傳送目標的 URL。


擲回值
SecurityError — 本機不受信任的 SWF 檔無法與網際網路進行通訊。 您可以透過將此 SWF 檔重新分類為「具有網路連線的本機」或受信任,避免此情況。
 
SecurityError — 您不可以連接到常用的保留連接埠。完整的封鎖連接埠清單,請參閱在「ActionScript 3.0 開發人員指南」中的「限制網路 API」

範例  ( 如何使用本範例 )

下列範例會將有關使用者工作階段 (在 URLVariables 物件中捕捉) 的資料傳遞給位於 http://www.yourDomain.com/application.jsp 的應用程式。
 package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.net.URLVariables;
    import flash.net.sendToURL;

    public class SendToURLExample extends Sprite {

        public function SendToURLExample() {
            var url:String = "http://www.yourDomain.com/application.jsp";
            var variables:URLVariables = new URLVariables();
            variables.sessionId = new Date().getTime();
            variables.userLabel = "Your Name";

            var request:URLRequest = new URLRequest(url);
            request.data = variables;
            trace("sendToURL: " + request.url + "?" + request.data);
            try {
                sendToURL(request);
            }
            catch (e:Error) {
                // handle error here
            }
        }
    }
}

[ X ]為什麼顯示英文?
「ActionScript 3.0 參考」的內容是以英文顯示

並非所有「ActionScript 3.0 參考」的內容都翻譯為所有語言。當語言元素未翻譯時,就會以英文顯示。例如,ga.controls.HelpBox 類別並沒有翻譯為任何語言。因此在參考的繁體中文版本中,ga.controls.HelpBox 類別就會以英文顯示。