In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

無理やりQuery取得

無理やりURL の 後ろの ? 以降を取得するテスト。
適当に後ろに ?hoge=moja とか入れてみてください。
ただし、デバッグプレイヤーオンリー。
@author jc at bk-zen.com
Get Adobe Flash player
by bkzen 27 Jun 2009
    Embed
/**
 * Copyright bkzen ( http://wonderfl.net/user/bkzen )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/j1f6
 */

package 
{
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.URLLoader;
    import flash.net.URLLoaderDataFormat;
    import flash.net.URLRequest;
    import flash.text.TextField;
    import flash.utils.ByteArray;
    
    /**
     * 無理やりURL の 後ろの ? 以降を取得するテスト。
     * 適当に後ろに ?hoge=moja とか入れてみてください。
     * ただし、デバッグプレイヤーオンリー。
     * @author jc at bk-zen.com
     */
    public class GetQueryTest extends Sprite
    {
        private var txt: TextField;
        private var loader:Loader;
        
        public function GetQueryTest() 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        private function init(e: Event = null): void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            //
            txt = new TextField();
            txt.width = txt.height = stage.stageWidth == 0 ? 465 : stage.stageWidth;
            addChild(txt);
            if (WQuery.available)
            {
                trc("query : " + WQuery.qString);
            }
            else 
            {
                trc("これは Flash Debug Player で", "ExternalInterface が対応しているブラウザのみ対応しています。");
            }
            
        }
        
        
        private function trc(...rest): void
        {
            var obj: Object;
            while (obj = rest.shift())
            {
                txt.appendText("" + obj + "\n");
            }
        }
        
    }
    
}

/**
 * 無理やり URL を取得する。(デバッグプレイヤーオンリー)
 */
class WQuery
{
    import flash.external.ExternalInterface;
    import flash.system.Capabilities;
    
    private static var _qString: String = "///";
    
    public static function get available(): Boolean { return ExternalInterface.available && Capabilities.isDebugger; }
    
    public static function getQuery(key: String): String
    {
        if (qString == "" ) return "";
        var s: int = _qString.indexOf(key + "=");
        if (s < 0) return "";
        var e: int = _qString.indexOf("&", s);
        if (e < 0) e = _qString.length;
        return _qString.substring(s + key.length + 1, e);
    }
    
    public static function get qString():String 
    {
        if (!available) return "";
        try
        {
            if (_qString == "///") _qString = ExternalInterface.call("function() { return window.location.search; }");
        }
        catch (error: Error)
        {
            if (error.errorID == 2060) 
            {
                var msg: String = error.message;
                msg = msg.split(" は ").pop().split(" ").shift();
                if (msg.indexOf("?") < 0) _qString = "";
                else _qString = msg.substr(msg.indexOf("?"));
            }
        }
        return _qString;
    }
}