Google検索のインスタントプレビューを無効にするユーザースクリプト

続編あります -> Googleインスタントプレビュー殺しのユーザースクリプトをアップデートした

Ajax化された処理にも対応したので,よろしければどうぞ.

Google検索のインスタントプレビューを無効にするユーザースクリプト



DL&インストールはこちら => Disable GOGL Instant Previews for Greasemonkey

インストールするだけで動作します。いずれもMac版のみですが、以下の環境で動作を確認しました。

  • Firefox3.6 + GreaseMonkey
  • Safari5 + GreaseKit
  • Chrome7

インスタントプレビューが、誤クリックで読み込みが始まってしまって鬱陶しいので、カッとなって無効化してみました。サイドバーの時は気にならなかったんですけど、今回の機能はアグレッシヴで個人的にダメ。

ユーザースクリプトは、Userscripts.orgにアップロードしてみました。こういうところにアップロードしてみるの、ちょっと憧れだったのです。(*´▽`)

以下蛇足で、動作内容とか初挑戦メモとか

vscというクラスが検索結果1件1件をラップしているんですが、それのclickイベントでインスタントプレビューが起動しているようだったので、大ざっぱにvscクラスそのものを削除しちゃいました。

スクリプト本体 (公開時点)

(function(){
    var vsc = document.querySelectorAll('div.vsc'),
        iz  = vsc.length,
        i   = 0;

    for ( ; i < iz; i++ ) {
        vsc[i].className = '';
    }
})();

初ユーザースクリプトでした。すごく単純な動作ですが、プレーンなJavaScriptのみでちゃんと書くことが少なかった為、無駄に引っかかったところもあり、以下メモ。

ユーザースクリプトの作法

// ==UserScript==
// @name           Disable GOGL Instant Previews
// @namespace      http://havelog.ayumusato.com/
// @description    Disable Google Instant Previews.
// @include        http://*.google.*/search*
// @version        1.1
// ==/UserScript==
@ name
そのまんま、スクリプトの名前。
@ namespace
name + namespaceで一意性を保っているらしく、作者のサイトURLなどが一般的らしい。
@ description
そのまんま、スクリプトの説明。
@ include
スクリプトの適用範囲。正規表現じゃなくて、単純にワイルドカード( * )が認められているだけ。
@ version
そのまんま、バージョン表記。アップデートのサポートとかあるだろうから、ちゃんと書いた方が良さそう。

getElementByClassNameが挙動不審

var vsc = document.getElementByClassName('vsc');

本来は10個とれるはずの要素が、半分ぐらいずつしか取得できない。謎。setIntervalでvscがなくなるまで、繰り返したら動作はしましたけど...色々間違ってる。

Chromeでwindow.addEventListenerって動作しない?

window.addEventListener('load', function()
{
     // chromeで動かない
});

ロードが終わったあとに実行するほうがベター的な記述を見つけて、書いたのですが微妙に罠でした。

DOMContentLoadedとかにも変えてみましたが、同様にChromeで動作せず。同じWebKit系のSafariで大丈夫だったのでやっぱり謎。ブラウザ間の差違の理解度が低いなぁ。結局は不要だったので削除して事なきを得る。

参考サイト

検索して他のサイトも調べましたが、ここだけ見ればOKだと思います。