Postメソッドでwindow.openしたい

案件でPostメソッドでwindow.openするような場面があったので作りました。
この方のコードをちょっと変更。 → 『window.open()でPOST

window.openの引数をちゃんとすべて指定できないですが、そのあたりは適当に。


function onClickSample()
{
	//設定
	var url = "sample.html";
	var query =	[	{ key:"hoge",	value:"fuga"},
					{ key:"test",	value:"test"},
			  	];
	
	//実行
	PostWindow = window.openByPost( url, query, "_newWindow" );
}


//window.openByPost 実装
window.openByPost = function ( url, query, name )
{
	var win = window.open( "about:blank", name );
	
	// formを生成
	var form = document.createElement("form");
	form.target = name;
	form.action = url;
	form.method = 'post';
	
	for( var i = 0; i < query.length; i++ ) 
	{
        var kv = query[i];
        var key = kv["key"];
        var val = kv["value"];
		
        
        if ( key )
        {
            var input = document.createElement("input");
            val = ( val != null ? val : "" );
            
            input.type = "hidden";
            input.name = key;
            input.value = val;
            form.appendChild( input );    
		}
    }

	// 一時的にbodyへformを追加。サブミット後、formを削除する
	var body = document.getElementsByTagName("body")[0];
	body.appendChild(form);
	form.submit();
	body.removeChild(form);	
	
	return win;
}