現在地

JavaScript

Googlepediaを修正

作成者:mattz 作成日:2009/10/15(木) 17:19

多少はウィンドウサイズの変動に耐えられるように変更した。

表示位置とか表示領域の大きさに関しては試行錯誤の結果の決め打ちなので、他の環境でどうかについては考慮していない。気に入らなければ勝手に調整したらいい。

ちなみにこのスクリプトは検索結果に表示される広告の部分を覆い隠してしまいますので、広告も見るんだ俺は、って方は使わないように。

ついでにYahoopediaってのも実は作ったけどGooglepedia.jsをちょっといじれば済む話なのでYahooがお好みであればそのようにしてください。

Googlepedia

作成者:mattz 作成日:2009/10/09(金) 17:58

Googlepedaの記事を読んで、似たようなもんがあるだろうと探しに行ったけど動きやしないので、それっぽいものを作った。

色々詰めが甘い(Windowサイズの変更とかまったく考慮してないし)けど、基本自分用なのでよし。

Wikipediaの表示内容については http://wikipedia.simpleapi.net/ を利用している。本家がいい人は、


url[j] = "http://wikipedia.simpleapi.net/api?output=html&keyword=" + kw[j];


url[j] = "http://ja.wikipedia.org/wiki/" + kw[j];

とかに変えればよろしい。

opera:config#UserPrefs|UserJavaScriptがONになっていればopera:config#UserPrefs|UserJavaScriptFile で指定されているフォルダに保存するか、サイ ト別の設定で指定したUser.js用のフォルダに保存することでとりあえず動く。はず。あとインラインフレームは有効で。添削歓迎。

ちなみに複数のキーワードで検索したときは最初の単語しか拾わない。複数単語のそれぞれについて色々やろうとした名残はソースに残っていますが、途中でめんどくさくなって投げました。はい。

表示の仕方とかは自身のディスプレイ環境に合わせて適当に調整してください。

ソースの


f.style.cssText = "position:absolute;left:700px;height:845px;top:180px;width:auto;background-color:white;z-index:"+(100-j);

この辺で調整できます。

追記

多少スクリプトに修正を入れたので調整の方法とかは変わってしまいましたが、ソース読めば分かると思うのでこのエントリはこのままで。

全角の英数字が大嫌い

作成者:mattz 作成日:2009/06/09(火) 14:57

キライなんです。醜いから。なので、極力目に入らないよう次のようなスクリプトを書いた。

// ==UserScript==
// @exclude http://mattz.xii.jp/*
// ==/UserScript==
(
function(){
  document.addEventListener(
    'DOMContentLoaded',
    function(){
      document.body.innerHTML = document.body.innerHTML.replace(/([0-9A-Za-z ])/g,function(str,p1){
        return {'0':'0','1':'1','2':'2','3':'3','4':'4','5':'5','6':'6','7':'7','8':'8','9':'9',
          'A':'A','B':'B','C':'C','D':'D','E':'E','F':'F','G':'G','H':'H','I':'I','J':'J','K':'K',
          'L':'L','M':'M','N':'N','O':'O','P':'P','Q':'Q','R':'R','S':'S','T':'T','U':'U','V':'V',
          'W':'W','X':'X','Y':'Y','Z':'Z','a':'a','b':'b','c':'c','d':'d','e':'e','f':'f','g':'g',
          'h':'h','i':'i','j':'j','k':'k','l':'l','m':'m','n':'n','o':'o','p':'p','q':'q','r':'r',
          's':'s','t':'t','u':'u','v':'v','w':'w','x':'x','y':'y','z':'z','(':'(',')':')',' ':' '}[p1];
      });
    },false
  );
})();

書いたけど、一部のスクリプトを殺してしまうようなので、ご利用は計画的に。

例えば、このDrupalの新規エントリ作成画面のスクリプトが動きません。おかしいなと思ったら、@excludeに追加していただくとか、根本的な問題を修正していた だくとか、そもそも使うのをやめるとかしてください。

2009/10/21 追記

別のスクリプトを作っている過程で、このスクリプトの問題点が分かったので対処。

ついでに、regexp - 全角英数字を半角にの全半変換関数をまんまコピーして作り直した。

Bookmarklet - link them all!でいいじゃねーかって?おっしゃる通り。

// ==UserScript==
// ==/UserScript==
(
function(){
  var fascii2ascii = (function(){
    var cclass
     = '['+String.fromCharCode(0xff01)+'-'+String.fromCharCode(0xff5e)+']';
    var re_fullwidth = new RegExp(cclass, 'g');
    var substitution = function(m){
      return String.fromCharCode(m.charCodeAt(0) - 0xfee0);
    };
    return function(s){ return s.replace(re_fullwidth, substitution) };
  })();
  window.addEventListener(
    'DOMContentLoaded',
    function(){
      var x = document.evaluate('//', document, null, 7, null);
      var l = x.snapshotLength;
      var val;
      for(i = 0;i < l;i++){
        if('#text' == x.snapshotItem(i).nodeName){
          val = x.snapshotItem(i).nodeValue;
          x.snapshotItem(i).nodeValue = fascii2ascii(val);
        }
      }
    },false
  );
})();

Re: IE6を使って閲覧すると右上に『アナログ』って出るように

作成者:mattz 作成日:2008/12/16(火) 13:56

もう誰かやってる気がするけど。IE6環境がないので、このJSを読み込んだページをIE6で開いてちゃんと表示されるかどうか分かりませんけど。

IE6を使って閲覧すると右上に『アナログ』って出るようにしようぜ。


if (typeof document.body.style.maxHeight == "undefined") {
  var div = document.createElement( 'div' );
  document.body.appendChild( div );
  div.setAttribute( 'id', 'analog' );
  var box = document.getElementById( 'analog' );
  box.style.cssText = 'position:absolute;top:0;right:0;width:auto;background-color:transparent;color:white;font-size:200%;font-weight:bold';
  box.innerText = 'アナログ';
}

こうですか?わかりません><

ホントはページの右上辺りの背景色を取得して、白っぽかったら灰色とかにするような処理を入れたい。

書くの忘れてた。IE6かどうかの判定についてはphpspot開発日誌のIE6とIE7を判別するJavascriptコードを参考にした。

1アクションではてなブックマークに追加する(Operaの場合)

作成者:mattz 作成日:2008/12/04(木) 14:14

手順その1

はてなブックマーク > セットアップの下の方にある旧バージョンのようなブックマークレットを使いたい 場合のところにある「ブックマークする」をブックマークレットとして使えるようにします。リンクを右クリックして、ブックマークに追加→[詳細>>]ボタ ンを押す→パーソナルバーに表示みたいにするのが一番楽かと思います。分かる人は自分なりに適当にやってください。

手順その2

次のようなuser.jsを用意します。

// ==UserScript==
// @include       http://b.hatena.ne.jp/add?*
// ==/UserScript==
(
  function(){
    window.addEventListener(
      'DOMContentLoaded',
      function(){
        document.getElementById('bookmarklet-form').submit();
      },false
    );
  }
)();

ログインしてるかどうかの判定ははてなさんがやってくれるのでしていません。サブアカとか使い分けてる人はそれなりに判定入れるようにしてください。

user.jsがやってることは、[追加する]ボタンを勝手に押す(submitする)っていうだけです。

ページを表示中にパーソナルバーの[ブックマークする]ボタンを押すと、コメント/タグなしではてなブックマークに追加して、元のページに戻ってきます。

僕基本はてなブックマークは使ってないので自分で使う気はないんですけど。

twicli用NGワードプラグイン作った

作成者:mattz 作成日:2008/11/05(水) 21:00

2009/11/25追記

未だにここにアクセスがあるので一応追記。現行のtwicliはNGワード機能は装備されているので、こんなものを使う必要はありません。

現行のtwicliでNGワード的なことをやるには、Pickup Patternのところに

NG::NG|ワード:1

などと書きます。これだけだと別タブに表示されてしまうだけなので、user stylesheetのところに

#pickup-NG{display:none;}

これでNGワード発言は目に入らなくなります。


2009/02/06追記

twicliを使わなくなってしまったので、最新バージョンでの動作確認などはしていません。もし動かなかったら、ローカルにでも保存してもらって適当 に編集したりしてみてください。やってることは至極単純ですので何とかなると思います。保証もしませんけど。


twicliってのはhttp://www.geocities.jp/twicli/を見れば分かるけど、Webブラウザーベースのtwitterクライアント。軽くて、Operaのパネルで動いてくれるので、愛用している。

プラグインとしてscriptを作るとかすると、機能を追加したりできるのだけど、まぁよく分からんので、ふーんそうなんだぁ、って感じでいた。

なんでまた、NGワードプラグインなんぞを作ろうと思い至ったかというと、あまりにもネガティブな発言しかしないヤツがいました。@ogochan最近書いたことだったりもするんだけど、あ まりにも繰り返されるとこっちが滅入ってくるんですよね。まぁさっさとremove、というかblockしてしまったんでこれでOK、とか思ったら、そいつと俺と の共通のfollowerによるそいつを励ますようなreplyは目に入ってきちゃうんですよね。もうそれだけで「またネガティブ発言か」とか思って不愉快になる 。なので、そいつのID自体目に入らないようにしたいとか思った訳です。

2ちゃんねるの専用ブラウザなんかではNGワード機能なんてのがあります。twicliにはプラグインがあり、NGワードプラグインなんてのもうあるんじゃ ね?とか思ったけど見つからなかったので結局自分で作った、と。

http://w-mattz.xii.jp/ngw/NGワード」の「NGワード」の部分を好きな単語(とかID)に変えて、twicliの「+」タブのPlugins:欄に追記して、Saveして、読み込みしなおせば適用されます。されなかったらごめんなさいですけど。

※Tweenの振り分け機能とやらでNGワード的なことは実現できるというのは調べてて分かったけど、クライアントを変える気はなかった。

ちょっと追記

http://w-mattz.xii.jp/ngw/(NG|ワード)」等とやれば「NG」または「ワード」がNGワードになります。

2008/12/01追記

動かない。というか読み込まれない。困ったね。

2008/12/12追記

momizineバージョンのかつ旧版を利用することで復活させられた。マジでいめったーうざい。

anondLDRize.jsを更にバージョンアップしました

作成者:mattz 作成日:2008/06/16(月) 14:13

anondLDRize.js ver 0.0.4(最新版)

バージョンアップしないとか言った気もしますが。

0.0.3からの変更点

  • 「その場で返信」機能の追加。
  • 機能追加に伴ってデフォルトキーアサイン変更。

デフォルトのキーアサイン

K
前のエントリ(個別表示時は1つ新しいエントリ)を表示する
J
次のエントリ(個別表示時は1つ古いエントリ)を表示する
F
ページ内の最初のエントリを表示する(個別表示時は無効)
L
ページ内の最後のエントリを表示する(個別表示時は無効)
A
前の25件を開く(個別表示時は無効)
S
次の25件を開く(個別表示時は無効)
T
増田トップに戻る
R
Replyフォームの表示
O
ハイライトされたエントリを別ウィンドウ(タブ)で開く(個別表示時は無効)
C
個別表示時にトラックバックを全て展開(トグル)する(一覧表示時は無効)

JavaScriptのススメ

作成者:mattz 作成日:2008/06/05(木) 11:59

一時期初心者向けの言語はなんだってのが盛り上がってた時期がありました。僕も半分冗談、半分本気でカルネージハートだろ、とか書きましたけど、もうちょっとまじめに言うならJavaScript(+html)をお勧めしておく。以下理由。

投資がほとんど要らない
ブラウザとエディタがあれば事足りる。まぁ、IEとnotepadじゃちょっと力不足な気はしますけど、一応それでもいいし。perlでもphpでもpythonでも 、Windowsでやろうと思うと、実行環境作んなきゃいけない。すでに最近のMac持ってるなら話は別ですが。
結果がすぐ見える
プログラミングしてて何が楽しいって、こう動いたらいいなと思って作ったものがその通りに動いたときが一番楽しい訳ですよ。JavaScriptはそれが すぐ見える。
割と役に立つ
まぁIEじゃあまり恩恵にあずかれない気がしますけど、Opera+user.js or widgetとか、僕はよく知りませんがFirefox+Greasemonkeyとか、日々のネットライフがちょっぴり便利になるものが簡単に書ける。
教科書がそこらじゅうにある
書籍も豊富だし、Web上でJavaScriptについて講座的なものを書いている人もいっぱいいるし(ろくでもないのもいっぱいあるけど)、ソースの実例も一杯ある。pythonかじってて何が一番困ってるかといえばサンプルコードがあまり見つからないこと。phpをやり始めた時に何が一番役に立ったかといえばオンラインマニュアルにサンプルコードがいっぱい載ってたこと。
あまり他人に迷惑をかけない(かも)
公開するhtmlに埋め込んで(読み込んで)って場合はともかく、user.jsやGreasemonkeyだったら、セキュリティホールだのXSSだのとかそれほど気にし なくていい。
あと、公開しようと思うとクロスブラウザ対策だのなんだので結構気を使うけど、user.jsにしろGreasemonkeyにしろ、OperaなりFxなりそれだけで動 けばいいので楽。

そういう訳で、プログラミングって面白そう、程度の人がやってみる言語としてはいいんじゃないかなと、思います。

仕事にするつもりならなんの言語でもいいよ。そのかわり最初の一個は徹底的にやれ。後が楽になる。

anondLDRize.jsを更にバージョンアップしました

作成者:mattz 作成日:2008/06/04(水) 16:55

anondLDRize.js ver 0.0.3(最新版)

ちなみにOperaのバージョンはBuild 10034でしか動作確認していません。9.2系にはgetElementsByClassNameがない、とかどっかで見た気がするので、多分動き ませんが、検証するつもりはゼロです。

0.0.2からの変更点

  • 最初/最後のエントリを表示するショートカット(デフォルトではF/L)を追加。
  • 個別表示時も前/次のエントリを開くを有効にした。
  • 個別表示時にトラックバックを展開(展開時は折りたたみ)するショートカット(デフォルトではC)を追加。
  • ハイライト中のエントリを別ページで開くためのショートカットのデフォルトをVからOに変更。
  • ソースコードを少し整理した。

どこからか要望でも来ない限り、多分もう大幅なバージョンアップはないと思います。バグ見つけたら教えてくれると嬉しいです。

anondLDRize.jsをバージョンアップしました

作成者:mattz 作成日:2008/06/04(水) 11:47

さらに続くぞ。

anondLDRize.js ver 0.0.2(最新版)

変更点

  • キーアサインを変更可能にしました。あっ試してない。まぁデフォルトのキーアサインが動くんだから変えても動くだろ。
  • エントリリストの表示位置を、左・右・表示しないから選択できるようにしました。ちなみにデフォルトは表示しないです。増田ってトラックバック エントリ(タイトルが言及先増田のURL)が多いのでリスト表示しても大して意味ない。
  • エントリリストを左右いずれかに表示する場合の表示幅を変更できるようにしました。無茶な数字にすると大変見づらくなると思いますので、20~30 くらいがよろしいかと。

いずれもお使いの方が直接スクリプトを編集する必要があります。

コード的にまだまだスマートでない部分がたくさんあるので、そう言うのも含めてもうちょっとバージョンアップすると思います。

ページ