WinHTTP で Ajax っぽく
mixi にログイン。ActiveX のイベント捕捉の仕方分からんので、タイマー使ってチェック。Optionでもっと楽にできたりして。
window.onload = function(){ var WinHttpReq = new ActiveXObject("WinHttp.WinHttpRequest.5.1"); WinHttpReq.open("POST", "https://mixi.jp/login.pl", true); WinHttpReq.send("next_url=%2Fhome.pl&email=email&password=password&x=51&y=8"); document.body.innerHTML = "loading"; var cookies; var timer = setInterval(function(){ try{ document.body.innerHTML = WinHttpReq.Status; cookies = login(); clearInterval(timer); timer = setInterval(function(){ try{ display(cookies); clearInterval(timer); } catch(e){ document.body.innerHTML += "\u25A0"; } }, 1000); } catch(e){ document.body.innerHTML += "\u25A0"; } }, 1000); function login(){ var headers = WinHttpReq.GetAllResponseHeaders().split("\n"); var cookies = []; for(var i = 0, l = headers.length; i < l; i++) if( headers[i].match(/^Set\-Cookie:\s(.*);\s.*$/) ) cookies.push(RegExp.$1); return cookies; } function display(cookies){ WinHttpReq.open("GET", "http://mixi.jp/home.pl"); WinHttpReq.SetRequestHeader( "Cookie", cookies.join("; ") ) WinHttpReq.send(); document.body.innerHTML = "<p>" + [ WinHttpReq.Status, WinHttpReq.GetAllResponseHeaders().split("\n").join("<br>"), WinHttpReq.ResponseText ].join("</p><p>") + "</p>"; } }
ActiveX のイベントってどうやって捕捉するんだ。MSXML の onreadystatechange はプロパティだから同じように扱えないんだよなー。