サイトコンセプト上仕方のないことだけど

47NEWSというサイトのSITEINFOを改変していたのですが、ニュースのリードのページから見て本文の存在するページを次ページとして認識して、繋げる仕様になっていました。同じサイト内に本文が存在するのであればいいのですが、他サイトから引っ張っている記事もあります。この場合、クロスドメイン制限に引っかかりエラーが出て繋げないのですね。


例を挙げると
http://www.47news.jp/news/2013/02/post_20130213184659.htmlなら
http://www.47news.jp/CN/201302/CN2013021301001704.htmlを繋げばいいので問題なく機能しますが


http://www.47news.jp/news/2013/02/post_20130213181554.htmlだと本文の存在する
http://article.okinawatimes.co.jp/article/2013-02-13_45231ドメインが違うので機能しません。


そこで、ドメインが違う場合に本文のページを開くGreasemonkeyスクリプトを書きました。

// ==UserScript==
// @name        47news_link
// @namespace   jigendaddy
// @include     http://www.47news.jp/*
// @version     1
// ==/UserScript==
var result = document.evaluate( 
                'id("bt_body")/a' ,        //  ここに Xpath 
                document,       // 評価対象。document.body とすると  head 以下の要素は取得されない 
                null,           // HTML 文書の場合や、名前空間接頭辞が使われていない場合は  null   
                7,              //  結果の種類を指定する。別表の「定義済みの結果型定数」と「値」を参照。 
        //  よく分からないなら 7 か、ORDERED_NODE_SNAPSHOT_TIPE。 
                null            // XPathResult オブジェクトを再利用するならそれを、しないなら null 
              ); 
tt= new Array(result.snapshotLength);
var dc="47news";

for(var i=0; i<result.snapshotLength; i++)
{
	tt[i]=result.snapshotItem(i).href;
}

for(var j=0;j<tt.length;j++)
{
	var nurl=tt[j];
	var point=nurl.indexOf(dc,0);

	if(point==-1)
	{
		window.open(nurl,"test"+j);
	}
}

例によって使い回しですが、もしよろしければどうぞ。