<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>snippets/dollarX</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -7,3 +7,6 @@
 [submodule &quot;snippets/createHTMLDocument&quot;]
 	path = snippets/createHTMLDocument
 	url = git://gist.github.com/49453.git
+[submodule &quot;snippets/dollarX&quot;]
+	path = snippets/dollarX
+	url = git://gist.github.com/3238.git</diff>
      <filename>.gitmodules</filename>
    </modified>
    <modified>
      <diff>@@ -7,6 +7,7 @@
 // @exclude     http://b.hatena.ne.jp/*
 // @require     http://svn.coderepos.org/share/lang/javascript/jsdeferred/trunk/jsdeferred.userscript.js
 // @require     http://svn.coderepos.org/share/lang/javascript/jsenumerator/trunk/jsenumerator.nodoc.js
+// @require     http://gist.github.com/3238.txt#$X
 // @require     http://gist.github.com/3239.txt#createElementFromString
 // @require     http://gist.github.com/46391.txt#duration
 // @require     http://gist.github.com/49453.txt#createHTMLDocument
@@ -112,31 +113,22 @@ window.AutoPagerize = {
 	addFilter : AutoPagerize.addFilter
 };
 
-function getResource (uri, convertfun) {
+function getHTMLResource (uri) {
 	var d = Deferred();
-	if (!convertfun) convertfun = function (i) { return i };
-	log(&quot;Getting Resource: &quot;+uri);
-	GM_xmlhttpRequest({
-		method  : &quot;GET&quot;,
-		url     : absoluteURI(uri),
-		overrideMimeType: 'text/html; charset=' + document.characterSet,
-		headers: {
-			&quot;User-Agent&quot;: navigator.userAgent + &quot; Greasemonkey (&quot; + AutoPagerize.VERSION + &quot;)&quot;
-		},
-		onload  : function (req) { try {
-			var res = convertfun(req.responseText);
-			d.call(res);
-		} catch (e) { d.fail(e) } },
-		onerror : function (e) {
-			d.fail(e);
+	var iframe = $E(&quot;&lt;iframe name='foobar' src='#{url}' style='display: none'&gt;&lt;/iframe&gt;&quot;, {
+		parent: document.body,
+		data : {
+			url : absoluteURI(uri)
 		}
 	});
+	iframe.contentWindow.addEventListener(&quot;DOMContentLoaded&quot;, function (e) {
+		e.preventDefault();
+		e.stopPropagation();
+		d.call(iframe.contentDocument);
+		iframe.parentNode.removeChild(iframe);
+	}, true);
 	return d;
 }
-
-function getHTMLResource (uri) {
-	return getResource(uri, getHTMLResource.createDocumentFromString);
-}
 getHTMLResource.createDocumentFromString = function (s) {
 	var elements = /&lt;(script|i?frame|object)[ \t\r\n&lt;&gt;][\S\s]*?&lt;\/\1(?:[ \t\r\n]*&gt;|[ \t\r\n]+)/;
 	var tags     = /&lt;\/?(?:html)(?:[ \t\r\n][^&lt;&gt;]*(?:&gt;|(?=&lt;))|[ \t\r\n]*&gt;)/;
@@ -295,6 +287,11 @@ AutoPagerize.loadNext = function () {
 				var orig_display = style.display;
 				style.display = &quot;none&quot;;
 
+				timers.push( wait(img ? 2 : 0.1).next(function () {
+					sep.style.display = &quot;block&quot;;
+					style.display = orig_display
+				}) );
+
 				// Cache
 				var elements = $X(&quot;.//img[@src]&quot;, i, Array);
 				var img;
@@ -309,65 +306,6 @@ AutoPagerize.loadNext = function () {
 				for (var j = 0, len = elements.length; j &lt; len; j++) {
 					elements[j].target = &quot;_blank&quot;;
 				}
-
-				// Restore hidden script elements
-				var elements = $X(&quot;.//textarea[@class = '_autopagerize_hidden_element']&quot;, i, Array);
-				loop(elements.length, function (j) {
-					var ele    = elements[j];
-					var source = ele.value;
-					log(source);
-					if (/^&lt;script/i.test(source)) {
-						var orig_write = unsafeWindow.document.write;
-						var temp       = document.createElement(&quot;div&quot;);
-						var written    = [];
-
-						unsafeWindow.document.write = function (str) {
-							written.push(str);
-						};
-
-						temp.innerHTML = source;
-						log(source);
-						if (/googlesyndication/.test(source)) return null;
-
-						var script = temp.getElementsByTagName(&quot;script&quot;)[0];
-
-						var deferred = Deferred();
-						script.addEventListener(&quot;load&quot;, function (e) {
-							unsafeWindow.document.write = orig_write;
-							temp.innerHTML = written.join(&quot;&quot;);
-							deferred.call(e);
-						}, false);
-						script.addEventListener(&quot;error&quot;, function (e) {
-							unsafeWindow.document.write = orig_write;
-							temp.innerHTML = written.join(&quot;&quot;);
-							deferred.fail(e);
-						}, false);
-
-						ele.parentNode.insertBefore(temp, ele);
-						ele.parentNode.removeChild(ele);
-
-						// alert(written.join(&quot;&quot;));
-						if (script.src) {
-							return deferred;
-						} else {
-							unsafeWindow.document.write = orig_write;
-							temp.innerHTML = written.join(&quot;&quot;);
-						}
-					} else
-					if (/^&lt;(?:iframe|object)/i.test(source)) {
-						var r = document.createRange();
-						r.selectNodeContents(document.body);
-						ele.parentNode.replaceChild(r.createContextualFragment(source), ele);
-					} else {
-					}
-					return null;
-				}).error(AutoPagerize.errorHandler);
-
-				//
-				timers.push( wait(img ? 2 : 0.1).next(function () {
-					sep.style.display = &quot;block&quot;;
-					style.display = orig_display
-				}) );
 			}
 
 			pib.insertBefore(i, ib);
@@ -537,7 +475,7 @@ AutoPagerize.init = function (opts) {
 						break;
 					case 'HTML':
 					default:
-						var d = getHTMLResource.createDocumentFromString(data);
+						var d = createDocumentFromString(data);
 						$X(&quot;.//*[@class='autopagerize_data']&quot;, d).forEach(function (e) {
 							// using replace as scan and folding key/value to i
 							var i = {}; e.value.replace(/^\s*([^:\s]+)\s*:\s*(.*)$/gm, function (m, key, value) {
@@ -871,57 +809,33 @@ function log (m) {
 	location.href = &quot;javascript:(function () { if (window.console) console.log.apply(console.log, &quot;+uneval(o)+&quot;) })();&quot;;
 }
 
+function getResource (uri, convertfun) {
+	var d = Deferred();
+	if (!convertfun) convertfun = function (i) { return i };
+	log(&quot;Getting Resource: &quot;+uri);
+	GM_xmlhttpRequest({
+		method  : &quot;GET&quot;,
+		url     : absoluteURI(uri),
+		overrideMimeType: 'text/html; charset=' + document.characterSet,
+		headers: {
+			&quot;User-Agent&quot;: navigator.userAgent + &quot; Greasemonkey (&quot; + AutoPagerize.VERSION + &quot;)&quot;
+		},
+		onload  : function (req) { try {
+			var res = convertfun(req.responseText);
+			d.call(res);
+		} catch (e) { d.fail(e) } },
+		onerror : function (e) {
+			d.fail(e);
+		}
+	});
+	return d;
+}
+
+
 function h (s) {
 	var d = document.createElement(&quot;div&quot;);
 	d.innerHTML = s;
 	return d;
 }
 
-// modified $X for relative path extension.
-function $X (exp, context, type /* want type */) {
-	if (arguments.callee.forceRelative || navigator.userAgent.indexOf(&quot;Safari/523.12&quot;) != -1)
-		exp = exp.replace(/id\(\s*([&quot;'])([^&quot;']+)\1\s*\)/g, '//*[@id=&quot;$2&quot;]');
-	if (arguments.callee.forceRelative)
-		exp = exp.indexOf(&quot;(//&quot;) == 0
-		    ? &quot;(.//&quot; + exp.substring(3)
-		    : (exp[0] == &quot;/&quot; ? &quot;.&quot; : &quot;./&quot;) + exp;
-	log(&quot;XPath: &quot; + exp);
-
-	if (typeof context == &quot;function&quot;) {
-		type    = context;
-		context = null;
-	}
-	if (!context) context = document;
-	exp = (context.ownerDocument || context).createExpression(exp, function (prefix) {
-		return (document.createNSResolver((context.ownerDocument == null
-			? context : context.ownerDocument).documentElement)
-			.lookupNamespaceURI(prefix) || document.documentElement.namespaceURI);
-	});
-
-	switch (type) {
-		case String: return exp.evaluate(context, XPathResult.STRING_TYPE, null).stringValue;
-		case Number: return exp.evaluate(context, XPathResult.NUMBER_TYPE, null).numberValue;
-		case Boolean: return exp.evaluate(context, XPathResult.BOOLEAN_TYPE, null).booleanValue;
-		case Array:
-			var result = exp.evaluate(context, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
-			for (var ret = [], i = 0, len = result.snapshotLength; i &lt; len; i++) {
-				ret.push(result.snapshotItem(i));
-			}
-			return ret;
-		case undefined:
-			var result = exp.evaluate(context, XPathResult.ANY_TYPE, null);
-			switch (result.resultType) {
-				case XPathResult.STRING_TYPE : return result.stringValue;
-				case XPathResult.NUMBER_TYPE : return result.numberValue;
-				case XPathResult.BOOLEAN_TYPE: return result.booleanValue;
-				case XPathResult.UNORDERED_NODE_ITERATOR_TYPE:
-					// not ensure the order.
-					var ret = [], i = null;
-					while ((i = result.iterateNext())) ret.push(i);
-					return ret;
-			}
-			return null;
-		default: throw(TypeError(&quot;$X: specified type is not valid type.&quot;));
-	}
-}
 })();</diff>
      <filename>jautopagerize.user.js</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>8bf5c8d14ed30959057be9a18a5a973c92a68010</id>
    </parent>
  </parents>
  <author>
    <name>cho45</name>
    <email>cho45@lowreal.net</email>
  </author>
  <url>http://github.com/cho45/jAutoPagerize/commit/9e0169ea8ab49e1907fb65bf586c5d9ba153d2b0</url>
  <id>9e0169ea8ab49e1907fb65bf586c5d9ba153d2b0</id>
  <committed-date>2009-06-10T10:54:36-07:00</committed-date>
  <authored-date>2009-06-10T10:54:36-07:00</authored-date>
  <message>iframe &#12391;&#35501;&#12415;&#12371;&#12416;&#12424;&#12358;&#12395;&#12375;&#12390;&#12415;&#12427;</message>
  <tree>b2a982796332861b96be819d415293a8e5eb255b</tree>
  <committer>
    <name>cho45</name>
    <email>cho45@lowreal.net</email>
  </committer>
</commit>
