Entries tagged with "AutoPagerize"

AutoPagerizeのFORCE_TARGET_WINDOW

ボクの見える範囲で立て続けに2件,AutoPagerizeのFORCE_TARGET_WINDOWにまつわる問題が起きていたので,エントリを立てることにした.FORCE_TARGET_WINDOW – Google 検索を眺めてみた感じ,既出と言われればその通りの話題のようだけど,誰かひとりの役にでも立てばいいと,そんなスタンスで書こう.

AutoPagerizeでページの継ぎ足しが起こると,閲覧ページ内のすべてのリンクに「target=”_blank”」が加えられる.つまり,別ウィンドウや別タブで開くようになるってことだ.AutoPagerize0.0.7でこの仕様が取り入れられたようで,現行のバージョン0.0.14でもスクリプト冒頭で宣言される「FORCE_TARGET_WINDOW」の値が「true」になっていると,このような挙動になる.

例えばAutoPagerizeが動いている状態でGoogleで何かを検索し,検索結果の3ページ目にあるリンクをクリックし,同一のタブ(もしくはウィンドウ)でリンク先のページを開いたとする.そのあと検索結果のページに戻ると,そこは検索結果の3ページ目ではなく,1ページ目なのだ.この「戻ったつもりが,もともといた場所に戻れない」問題を防ぐために,_blankで開くようになっているだろう.AutoPagerizeの作者であるid:swdyhさん自身は,

リンクをどう開きたいかは、基本的にはユーザに任せるのがいいと思うんだけれど、
AutoPagerizeでが動いてるような場合は、別ウィンドウがいいのかも、と思ってそうしてみた。
別ウィンドウで開きたい、とうより、同じウィンドウでリンクを開いて戻ったときに、
いっきにロードがかかるのを避けたい。
だからtargetの書きかえは、AutoPagerの起動時じゃなくて、
継ぎ足しロードが終ったあと。

SWDYH – AutoPagerize0.0.7

と言っている.

「なんで別タブで開くんだよぅ!」と思っていた人は,Firefoxの右下の方にいるお猿さんを右クリックして「ユーザスクリプトの管理」を開いて,AutoPagerizeを編集して,FORCE_TARGET_WINDOWの値を「false」に書き換えて使いましょう.また,AutoPagerizeの新バージョンをインストールすると古いスクリプトに上書きインストールされるので,そのときも値を書き換えるのを忘れないように!

swdyhさんよりコメントにてご指摘を頂きまして,誤った記述を削除しました.

AutoPagerizeでmixi日記のコメント欄が逃げる件

さっき,twitterのボクから見える範囲でも話題になっていたので,軽くまとめておく.

mixiのリニューアル後から,mixiの日記のページでAutoPagerizeが動くようになった.誰かがSITEINFOを追加してくれたってことだ.だけど!過去の日記が継ぎ足される場所(insertBefore)がコメント欄の上だったからさぁ大変!コメント欄が逃げちゃう.追いかけても追いかけても逃げていく月のように!あと,tumblrのトップページの「Log in」のリンクも逃げますよね!

Twitter検索 : autopagerize mixiで見るみんなの反応.

この問題に対する解決策は,大きく分けて以下の2通りある.

  • 「http://mixi.jp/view_diary.pl」で,AutoPagerizeを動かさないように設定する
  • SITEINFOを書き換えて,コメント欄が逃げないようにする

「http://mixi.jp/view_diary.pl」で,AutoPagerizeを動かさないように設定する

この方法は,AutoPagerizeを利用するすべての人が覚えておくべき.@otsuneさんがご丁寧にotsune tumblrまとめサイト画像保管庫QにSSを載せてくれているので,参考にするといい.

SITEINFOを書き換えて,コメント欄が逃げないようにする

ボクはこっちの方法を選んだ.mixiのインタフェースだと,1日に複数の日記を書く人の古い日記が埋もれてしまうことが多々あって困っている.AutoPagerizeはこの問題をキレイに解決してくれるから,動かないようにしてしまうのは勿体ないと感じる.

url:          'http://mixi.jp/view_diary.pl*',
nextLink:     '//div[@id="diaryComment"]/div[@class="pageNavigation01"]/div[@class="pageList04 clearfix"]/ul/li[@class="pageLeft"]/a',
insertBefore: '//div[@class="diaryBottomAd"]',
pageElement:  '//div[@id="bodyMainAreaMain"]',

insertBeforeだけじゃなく,pageElementも書き換えた.過去の日記の本文と一緒に,コメント欄も取ってくるようにしている.

こんなことを書いている間に

@otsuneさんがSITEINFOのWikiを更新したようですね!動かさないように設定した人は,その設定を解除して,SITEINFOのキャッシュをクリアして,どんな挙動になったか確認してみるといいよ!これなら好き嫌いなくみんなが使えるんじゃないかな!

この件を通じて思ったこと

SITEINFOの難しさを感じた.ここで「ドリコムをなめないでいただきたい」でおなじみの@onkさんの言葉を引用します.

とりあえず,そもそも wiki を使って SITEINFO を集めるのが嫌いな理由は分かった。適用するかどうかの最終判断は自分のコントロール化にあるべきだと思っているからだ。

Twitter / Takafumi Onaka

この気持ちはすごく分かります.ボクはSITEINFOは素晴らしい仕組みだと思うし,もっとSITEINFOを活用した他のスクリプトが生まれてほしいと思っている身ですが,コントロールの問題はありますよね.ちょっとSITEINFOを編集しただけで,多くのユーザに影響が及んでしまうから,今回のように,小さい騒動になってしまうかもしれない.だから編集しようと思ったら慎重にならなきゃいけない.

今,「グローバルGreasemonkey」みたいなものを考えていて,これは,誰かがユーザスクリプトをインストールしたら,それがすべてのユーザに共有されるっていうものなんだけど,同じ種類の難しさがあるなあと思っている.アイディアの発端は,知り合いに「君の設定を教えておくれよ」と言われたときで,ボクが新しいスクリプトをインストールするたびに「これインストールしてね」っていうのは面倒だから.個人的には面白いアイディアだと思っているんだけど,やっぱり,解決しなきゃならない問題はあるね.

何かを使うに当たって「何が起きているのか分からない」状況は,気分の良いものではない.

tumblrのテーマとAutoPagerize

tumblrのことばっかり考えているよ.ゴメンなさい.

ってところまで書いて下書きを保存していたんだけど,今はUstreamのことも考えている.今年に入ってからの,Web利用のスタイルの変化は凄まじい.余談でした.

ちょっと前に,cameron i/o tumblr themesというtumblrのステキなテーマを配布しているサイトを知ったので,使わせてもらうことにしました.

cameron i/o tumblr themescameron i/o tumblr themes

ところが!このテーマはAutoPagerizeに対応していないんですよね… こりゃあ参った! 「フィード吐いてないサイトなんか」のノリで「AutoPagerizeが動かないtumblogなんて」って言われたら泣きそうなので,焦って対応しました.ボクはBanner Yearというテーマを使わせてもらっていて,こいつのフッターが悪さをしていたのでヘッダーの方に移動しました.最初,フッターを削除したんだけど,テーマを配布してくれているサイトさんにリンクを張らないのはイヤだったので移動にしました.

AutoPagerizeのソースを読んだり,SWDYHの過去のエントリから順番に更新履歴を読んだりしました.Microformatsってそういうことかー,と思ったりしました.勉強になるなあ.

AutoPagerizeって,海外ユーザにはどれくらい使われているんでしょうね.ボクの勝手な解釈では,日本人でuser.jsを日常的に使っている人の多くはそろそろAutoPagerize以前の世界を思い出せなくなってきている頃かと思います.もうAutoPagerizeのMicroformatsがデファクトになったらいいんじゃないかと考えています.AutoPagerizeはユーザスクリプトの枠を超えていますなあ.ユーザスクリプトって,機能で語っちゃうと「閲覧ページをゴニョゴニョする」だけですけど,もっと考えると「閲覧スタイルの提案と共有」のプラットフォームですよね.「オレはこのページはこうやってみたいんだ!絶対にこう見るべきなんだ!」って言えて,さらにそれらを簡単に共有できる.共感できる人たちは,継続してそのスタイルを使うってことです.

あとボクが衝撃を受けたのはSITEINFOを使うという設計です.みんなで共通に使うものは一箇所で管理する,って,どう考えても自然な考え方なんですけど,例えばボクらが以前に作ったFavicon出す系のスクリプトたちは,そういう設計になっていない.「Faviconを出す」ってところは同じなんだから,「どこに出すか」だけをみんなで共有すればいいんじゃないか.好きなところに出していいよ!

同様に,「○○○に被はてブ数を表示するスクリプト」とかも,どこに出すかはSITEINFOで管理すればいい気がする.好きなところに出していいよ!ダメかな.こんな話を開発仲間としていたら,頭がだんだんとSITEINFO脳になってきて,どうでもいいものまで「それSITEINFOで!」とか言い出すようになったから考えるのをやめた.