20111207

AS3で相対パスを絶対パスに変換する

カテゴリー: as3_studies — shin-go @ 11:17 PM

Flashのソーシャル連携で、リンクとかサムネイルのURLを投稿するときに、
内部的には相対パスで持っていたいけど、投稿するときは絶対パスで指定しなきゃいけない場合があって、他にはあんまり使い所が少なそうだけど、相対パスを絶対パスに変換する関数をつくってみた。
正規表現は苦手なので、Stringクラスの操作だけでごにょごにょやってます。

function relativeToAbsolute(baseURL:String, path:String):String {
	//pathが絶対パスの時はお帰りください
	if (path.substr(0, 4) == "http") {
		return path;
	}
	var _ary:Array = baseURL.split("//");
	var ary:Array;
	var absolute:String;
	ary =_ary[1].split("/");
	if (ary.length>1 && ary[ary.length - 1].split(".").length>1) {
		//末尾がファイル名で終わる時
		ary.pop();
	}else if (ary[ary.length - 1]=="") {
		//末尾が/で終わるとき
		ary.pop();
	}
	if (path.charAt(0) == "/") {
		//pathが「/」で始まる時
		absolute = _ary[0] + "//" + ary[0] + path;
	}else if (path.substr(0,2)=="./") {
		//pathが「./」で始まる時
		absolute = _ary[0]+"//"+ary.join("/") + "/";
	}else if (path.substr(0, 3) == "../") {
		//pathが「../」で始まる時
		var i:int = 0;
		while (path.substr(i * 3, 3) == "../") {
		ary.pop();
			i += 1;
		}
		absolute = _ary[0]+"//"+ary.join("/") + "/" + path.substr(i*3);
	}else {
		absolute = _ary[0]+"//"+ary.join("/") + "/" + path;
	}
	return absolute;
}

使い方はbaseURLに基準となるURLの絶対パス。
pathに相対パスを指定すると、相対パスを適用した絶対パスが帰ってきます。

relativeToAbsolute("http://www.shin-go.net/motionlab/?cat=8","hoge.html");
  // "http://www.shin-go.net/motionlab/hoge.html"

relativeToAbsolute("http://www.shin-go.net/motionlab/?cat=8","./");
  // "http://www.shin-go.net/motionlab/"

relativeToAbsolute("http://www.shin-go.net/motionlab/?cat=8","../");
  // "http://www.shin-go.net/"

relativeToAbsolute("http://www.shin-go.net/motionlab/?cat=8","../hoge.html");
  // "http://www.shin-go.net/hoge.html"

relativeToAbsolute("http://www.shin-go.net/motionlab/?cat=8","/hoge.html");
  // "http://www.shin-go.net/hoge.html"

といった感じで、htmlのaタグに使える相対パスならなんでもいけます。

add to hatena hatena.comment (1) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 1

20111129

javascriptで別ウィンドウでPOST

カテゴリー: javascript — shin-go @ 12:04 PM

ボタンを押した時にPOST送信と別ウィンドウを開くとき、
POSTとwindow.openをそれぞれ別に実行するとどちらかが失敗することがあるので、

var html="";
html+='<form name="my_form" method="post" action="window.php" target="_blank">';
html+='<input type="hidden" name="id" value="123456"> ';
html+='<input type="submit" value="ウィンドウを開く" />';
html+='</form>';
$("div").append(html);

こんな感じで動的にformをつくってtarget=”_blank”を指定。

add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

20110901

links for 2011-09-01

カテゴリー: bookmark — shin-go @ 9:03 PM
add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

20110818

links for 2011-08-18

カテゴリー: bookmark — shin-go @ 9:01 PM
add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

20110804

iframeのテスト

カテゴリー: others — shin-go @ 8:13 PM

add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

20110620

links for 2011-06-20

カテゴリー: bookmark — shin-go @ 9:02 PM
add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

20110609

傾いた矩形の内側か外側かの判定

カテゴリー: as3_studies — shin-go @ 2:52 PM

javascript でゲームを作るに当たって、汎用ライブラリをつくってるんだけど、
こういうちょっとした処理の検証はwonderflつかうと便利だなと実感。

傾いた矩形の内側か外側かの判定 - wonderfl build flash online

add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

20110607

links for 2011-06-07

カテゴリー: bookmark — shin-go @ 9:03 PM
add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

20110606

links for 2011-06-06

カテゴリー: bookmark — shin-go @ 9:01 PM
add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

20110528

links for 2011-05-28

カテゴリー: bookmark — shin-go @ 9:01 PM
add to hatena hatena.comment (0) add to del.icio.us (0) add to livedoor.clip (0) add to Yahoo!Bookmark (0) Total: 0

Powered by WordPress

ページTOPへ