Hatena::Groupos0x

FFFF RSSフィード

0xFFのメモです。

2008 February 14th Thursday

AutoPagerizeしてるときにTwitterの返信ボタンをクリックするとタブが開いてしまうのを止める

| 21:15 | AutoPagerizeしてるときにTwitterの返信ボタンをクリックするとタブが開いてしまうのを止める - FFFF を含むブックマーク はてなブックマーク - AutoPagerizeしてるときにTwitterの返信ボタンをクリックするとタブが開いてしまうのを止める - FFFF

AutoPagerize0.0.23 - SWDYHですでに解決しています。

http://ss-o.net/userjs/blockblank.user.js

// ==UserScript==
// @name           block blank
// @namespace      http://ss-o.net/
// @include        http://twitter.com/home
// ==/UserScript==
setTimeout(function(){
	var xpath = './/img[contains(@src,"reply.png")]/..'; //  '//a';
	var target = '_self';
	var filter = function(docs) {
		if (!docs.length) return;
		for (var d=0;d<docs.length;d++) {
			var context = docs[d] || document;
			var doc = context.ownerDocument || context;
			var exp = doc.createExpression(xpath, function(){return "";});
			var res = exp.evaluate(context,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
			for (var i =0,len=res.snapshotLength;i<len;i++){
				res.snapshotItem(i).target = target;
			}
		}
	}
	if (window.AutoPagerize && window.AutoPagerize.addFilter) {
		window.AutoPagerize.addFilter(filter);
	} 
},0);

Opera9とGreasemonkeyで動作確認。XPathを//aにすればすべてのリンクの_blankをブロックできる。

XPathを$X関数を使わずに書いてみる試み。

結局カンニングしちゃった。。

もっとシンプルに書けそうだな。

kzyskzys2008/02/15 15:43言語は Objective-C で、実行時は DOMContentLoaded 相当です。
実装では document.readyState == 'loaded' かどうかをチェックしています。

os0xos0x2008/02/15 16:08> kzysさん
あざっす!
「DOMContentLoaded 相当」であって、そのものではないということですね。
jQueryとかで使われているのと仕組みとしては同じ実装ですね。