JavaScript

ユーザ入力したURLにjavascriptスキームの脆弱性

時々、ユーザが入力したURLが"javascript:"で始まっていても、そのままハイパーリンクにして表示しまうWebサイトがあります。アンカーテキストも自由に指定できる場合は、サイトの閲覧者を誘ってその偽リンクをクリックさせることにより、Webサイト上で任意…

あわせて読みたいのuser.jsを修正。

「あわせて読みたい」にはてブとlivedoor Readerのカウンターをつけるuser.js - sawatの日記で、はてブ数やLDR購読数が表示されなくなっていました。 報告ありがとうございます。原因は、あわせて読みたいからのリンクがawasete.comのサーバを経由する形に変…

日記書いてない期間が一ヶ月を超えたので

記念におよそ一ヶ月前のエントリで公開したuser.jsをバージョンアップした。 ウソ。 バージョンアップしたのもおよそ一ヶ月前。 前のを作ってすぐ使い勝手が悪いことに気づいてこのバージョンを自分では使ってた。 前のエントリ LDRでフォーカスされているリ…

LDRでフォーカスされているリンクをEnterキーで開くuser.js

上のネタを使ったコネタ。 LDRやFastLadderではEnterキーがエントリーの順送り、逆送り(j,kと同じ)に当てられているので、タブでリンクをフォーカスしてるのにEnter押しても開けない。ひどい。この問題を解決する user.js を書いた。openlink4ldr.user.js //…

フォーカスされている要素を取得する方法

忘れないようにメモしておこう。 var element = (document.activeElement || window.getSelection().focusNode); 前半がIE/Opera用。getSelectionを使うのはFirefox用。Safariは多分ゴメンナサイ。

「あわせて読みたい」にはてブとlivedoor Readerのカウンターをつけるuser.js

「あわせて読みたい」が更新されたから、前回エントリーのuser.jsも直さなきゃいけないかなと思ったのですが、全然そのままで問題ないみたいなので、代わりに(?) id:onkさんのアイデアを実装してみました。 livedoor Reader購読者数の取得にはFeed Discover …

「あわせて読みたい」にはてなブックマークカウンターをつけるuser.js

はてなカウンターのリンク元みてたら「あわせて読みたい」からのリンクがちらほらあって、それを見てたら思いついたので速攻で作ってみました。 はてブカウンターの画像は「注目エントリー」へのリンクにもなっているので、あわせてどれを読むのかの参考にな…

unDonutからSleipnirに乗り換えるために作ったuser.js

世間ではWindows版のSafariがでて話題になったりしてますが、僕は最近メインのWeb参照用ブラウザをunDonutからSleipnirに乗り換えました。 乗り換えの理由は、unDonutで使っていた機能が全て標準でまかなえることと、SeaHorseがあること。 でも、一個だけど…

インクリメンタルサーチでJavadoc APIをさくさく参照するためのuser.jsなど

こんなの作りました。 図1:検索フォームです。図2:"js"と打ってみたところ。Javadoc API用のインクリメンタル・サーチです。 以下のような検索ができます。 通常はクラス名を前方一致で検索します。大文字小文字は区別しません。 一文字目を"*"にすると中…

IE7のXMLHttpRequestはセキュリティ制限がアップしている?

先週の金曜に書かなかったネタについて、重い腰をあげて書こうと思ったら変なところでハマってしまった。どうもIE7ではXMLHttpRequestを使って「ローカルファイルからローカルファイル」へのアクセスができないようだ。IE6とFirefox2.0にはこのような制限は…

evalの第二引数とGreasemonkeyのunsafeWindowについて

「http://d.hatena.ne.jp/brazil/20070420/1177060289」でFirefox専用の第二引数に環境の指定をとるevalの使い方について説明されています。その元はこちら「http://www.tom.sfc.keio.ac.jp/~sakai/d/?date=20070414#p02」で、僕もこれを見たときに初めてし…

「http://d.hatena.ne.jp/Sybian/20070415/p1」をGreasemonkeyに移植した。

インストール http://sawat.jf.land.to/gm/google_ldr_keybind_fx.user.js (追記) 本家がFirefox/Opera両対応になったので、こちらをインストールしてください。 http://sybian.picopico.cc/data/google_ldr_keybind_fx_op.user.js ソース // ==UserScript==…

setIntervalを実験する

今日の三角巾を読んで、amachang氏のsetInterval03.jsを試してみたくなって、こんな実験ページを作ってみた。無駄に多くのsetIntervalを使ってアニメーションをすると、setInterval03.jsを使わない場合は、Firefoxだとかなりグダグダな感じになってしまう。…

Unicodeエスケープ

付箋紙Greasemonkeyで、GM_setValueに登録した日本語の文字化け対策にencodeURIをつかったけど、encodeURIはURIをエンコードするための関数なのであんまり褒められた使い方ではないですね。しかも、encodeURIのようなURLエンコーディングは文字列をUTF-8にし…

グリッドレイアウトブックマークレットと一緒に使うと便利かもしれないブックマークレット作りました。

はてブで人気になっていたグリッドレイアウトブックマークレットを見て思いついたので作って見ました。 スクリーンショット 縦横のガイドラインを表示します。 Firefox用のは座標も表示します。IEは文字数制限(512文字)に引っかかるので割愛しました。 Firef…

クライアントサイドWeb付箋紙 Greasemonkey

グリモンでこんなの作ってみました。 図1: はてなのトップページに付箋紙をぺたぺた貼り付けてみた これは何? Greasemonkeyを使ったWeb付箋紙ツールです。 Web上の任意のページにメモを貼り付けておくことができます。 GreasemonkeyのGM_getValue/GM_setVal…

この方法ではArrayを継承することは… できないッ!

「まるごとJavaScript & Ajax ! Vol.1」買いました。まるごとJavaScript & Ajax ! Vol.1作者: 天野仁史,舘野祐一,川崎有亮,arton,田中孝太郎,国分裕,山本有悟,海野裕也,nanto_vi出版社/メーカー: インプレス発売日: 2007/02/15メディア: 大型本購入: 8人 ク…

ローカル変数も展開したい!

弾さんのとこで、JavaScriptでテキスト内の変数展開をやる方法がでてる。 テキスト内の変数展開はいつも欲しいと思う。+で文字列を連結するのうざい!というわけで作ってみました。 function interpolate(str){ return str.replace(/#\{([^\}]+)\}/g, functio…

JavaScriptで擬似ヒアドキュメント

今度は、JavaScriptで、sleepとかヒアドキュメントとかやる方法を ききにいきたいので、できるようにしておいてください!おねがいします! http://d.hatena.ne.jp/Hamachiya2/20070215/devsum というのをみて、「関数内にコメントで書いて、arguments.calle…

Array#sortはオレmergesortよりも遅い!?

前のエントリのトラックバックが相手方になぜか反映されないのですが、言及していただけました。404 Blog Not Found:perl - the sort pragma 「マージソートだから遅いわけじゃない」ってことが書いてありました*1。なるほど。せっかくなので、マージソート…

クイックソートよりも遅いマージソートな理由

404 Blog Not Found:javascript - Array#sortがオレquicksortより遅い!?について コメントしようと思ったけどちょっと長くなったのでTrackbackに。 コメントには"Perl-inspired"とあって使っているのはmerge sortなのだけど、なぜこんなに遅いのか、これだけ…

Rubyリファレンスマニュアルにメソッドの概要を追加する

プログラミング言語 Ruby リファレンスマニュアルRubyリファレンスマニュアル]を見ていて思ったのですが、Rubyってひとつクラス/モジュールあたりのメソッド数がすごく多いですよね。そう。すごくヒューメイン。 それはいいのだけど、逆にリファレンスマニ…

"aaa".match(/regexp/) == ?

JavaScriptで正規表現マッチをする関数は Stringオブジェクトの match(regexp) な訳ですが、これの戻り値は (null or マッチした文字列)かと思ってた*1ら違うみたいですね。昨日のグリモン作るときに使って気づきました。 gオプションの有無やブラウザによっ…

はてなダイアリーシンタックスハイライトGreasemonkey

はてなグループにあってはてなダイアリーにないコードのシンタックスハイライトを、なんとなくGeSHiでWebAPI書いてみた - KoshigoeBLOGを使って作ってみました。 以下のスクリプトをインストール http://sawat.jf.land.to/gm/hd_syntax_highlight.user.js 使…

はてダ内ブックマークレット有効化Greasemonkey

それすぐ実行!JavaScript! - IT戦記を見ながら、ブックマークレットが貼れないはてなダイアリーは不便だと思いました。*1 そこで、Greasemonkey。 動作 中身が"javascript:"で始まるpreタグをdocument内から探して、内容をAタグで囲んでブックマークレット…

バグ修正・・・。

前回のエントリー しなもんとどこでも遊べるGreasemonkey & Bookmarklet - sawatの日記 のやつについて、 Greasemonkeyで実行した場合にはてなブックマークコメントの取得ができておらず、しなもんがおしゃべりをしないことに2週間たった今頃気付きました…。…

しなもんとどこでも遊べるGreasemonkey & Bookmarklet

id:sawat:20060922の続きですが、ふと思うところがあって作ってみました。しなもんがブラウザ上のマウスカーソルを追いかけてきます。マウスをぐるぐる動かして気が済むまで、しなもんと追いかけっこしましょう。 図1 : しなもんがマウスカーソルを追っかけ…

JavaScriptはほんとにシングルスレッドで実行されているのか?

amachang氏の JavaScript を学ぶ際に一番重要なのに、誤解されがちな setTimeout 系の概念 - IT戦記 を読んで、「そうそうJavaScriptはシングルスレッドだからね〜」なんて思っていながらその実証コードを作って遊んでいるうちに奇妙な現象を発見した。以下…

四則演算クイズとその解答ジェネレータ

8月23日の日記に書いたスレッドに新たなお題が出てました。「論理的思考力テスト【解答つき】」(1) @ITクラブ Cafe − @IT 有名な四則演算とカッコで10を作る問題です。 二つの数を組み合わせて二桁の数にしたり、累乗、階乗は反則ですよ。 順番を変え…

わかんなかったこと

JavaScriptで実行中のウィンドウもしくはタブがアクティブかどうかを判定するにはどうすればよいのだろう? ちょっとしたGreasemonkey/Trixieスクリプトを作ったんだけど、これがわからなくてお蔵入り状態。 document.body.onfocus/onblurじゃドキュメント内…