読者です 読者をやめる 読者になる 読者になる

SleipnirのSeaHorseでドメイン越え

似非GM_XHRかも。

  • ドメイン越え
  • Sleipnirがフリーズしない。
  • WSHではない。

SeaHorseスクリプトができたかも。

ほとんどプヨぷよ氏のパクリです(__;)

実用性0だけどとりあえずあげておきます。
単にgooのトップページのケツにはてなのトップをつないだだけです。

// ==UserScript==
// @name SH_XHR
// @description えせGM_xmlHTTPRequest
// @include http://www.goo.ne.jp/
// @type SleipnirScript
// ==/UserScript==


/*******************************************
動作説明
	ページ内のドキュメントにSleipnirが作成したオブジェクトを持たせること(?)でブラウザのフリーズを回避。
	たぶんこれで非同期化ができてると思う。
	onloadイベント(読み込み時)でSH_XHRが着火。
	onloadイベントは一回しか呼ばれないので非同期モード(引数=true)が可能。
	SH_XHRはonunloadイベントで消される。
********************************************/


if (_document) {
	Init(_window);
}

//SleipnirScript
function Init(targetWindow)
{
	var frames = targetWindow.document.getElementsByTagName("frame");
	if (frames.length) {
		for (i = 0; i < frames.length; i++) {
		 Init(frames[i].contentWindow);
		}
	}
	else if (!targetWindow.dict) {
		targetWindow.xmlhttp = sleipnir.CreateObject("MSXML2.ServerXMLHTTP");
		
		jscript = targetWindow.document.createElement("script");
		jscript.type = "text/javascript";
		jscript.text = SH_XHR + closeSH_XHR;
		targetWindow.document.getElementsByTagName("head").item(0).appendChild(jscript);
		
		targetWindow.attachEvent("onload", targetWindow.SH_XHR);
		targetWindow.attachEvent("onunload", targetWindow.closeSH_XHR);
	}
}

//JavaScript
function SH_XHR()
{
	window.xmlhttp.onreadystatechange = function() { 
	 	if (xmlhttp.readyState == 4) { 
	    	var v = xmlhttp.responseText; 
	    	document.body.innerHTML += v;
	 	} 
	}; 
	xmlhttp.open("GET", "http://hatena.ne.jp/",true, "", "");
	xmlhttp.send(null);
}

//JavaScript
function closeSH_XHR()
{
	window.xmlhttp = null;
}

ん〜

微妙にひっかりがあるなぁ。
きっとプヨぷよ氏やSleipnir2スレの中の人たちがもっといい感じのをリリースしてくれることに期待。