サイトコンセプト上仕方のないことだけど
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); } }
例によって使い回しですが、もしよろしければどうぞ。