タグ

ブックマーク / os0x.hatenablog.com (66)

  • Googleのトップページを開くと毎秒100回実行されるスクリプトを止めるユーザースクリプト - os0x.blog

    Googleのトップページを開くと毎秒100回JavaScriptが実行されるよ - 射撃しつつ前転をみて、ちょっとソース読んでみたらホントにそんな実装になっていた。んじゃ、止めちゃいますかってことで、サジェスト自体はそのまま機能させつつ、IMEでの確定前の入力には反応しないという実装に無理やり変えるスクリプトを書きました。一応動作を確認したのはFirefox3.5(Greasemokey 0.8)、Opera10、Google Chrome Dev(4.0.213.1)です。GreaseKitは実行タイミングの問題で怪しいかも。 404 Not Found – Userscripts.org ちなみに、なんでGoogleはポーリングをしているかっていうと、IMEが確定する前の入力途中のキーワードを捕まえるためのようです。そこまでする必要ないよって人も多そうですよね。そういう人向けのスクリ

    Googleのトップページを開くと毎秒100回実行されるスクリプトを止めるユーザースクリプト - os0x.blog
    otsune
    otsune 2009/10/01
  • AutoPagerizeで継ぎ足された部分に自分のスクリプトを適用する方法あれこれ - os0x.blog

    以前からある手法から順番に見ていきます。 ページの高さの監視 setIntervalでページの高さを監視して、増えていたらAutoPagerizeが動いたとみなして処理を行う var THRESHOLD = 300; var _height = window.innerHeight; setInterval(function(){ if (window.innerHeight - _height > THRESHOLD) { // 処理 } _height = window.innerHeight; }, 300); メリット AutoPagerizeだけでなく、はてなダイアリー・ブックマーク、Twitterなどでのサイト側でのページの継ぎ足しにも対応できる デメリット THRESHOLDをいくつにするかなど、一概に決められない。タイマーをたくさん回すと重くなる。Floatしている要素を継

    AutoPagerizeで継ぎ足された部分に自分のスクリプトを適用する方法あれこれ - os0x.blog
    otsune
    otsune 2009/08/30
  • FirefoxとOpera対応のUser Scriptを書くときのunsafeWindow - os0x.blog

    煤 - Note : 各ユーザスクリプトツールの window、unsafeWindowの件。 今までは、 var w = typeof unsafeWindow != "undefined" ? unsafeWindow : window; こう書いてた。typeofや"undefined"が嫌な感じ。 でも、 var w = this.unsafeWindow || window; これでいけるみたい。 もちろん、thisが変わっている場合は使えない。 無名関数を使って、 (function(unsafeWindow){ // alert(unsafeWindow) })(this.unsafeWindow || window); こうするとスマートかも。 SafariやIE(fub)は確認してない。(が、問題ないと思う) [追記] miya2000さんのブクマコメより、 window

    FirefoxとOpera対応のUser Scriptを書くときのunsafeWindow - os0x.blog
    otsune
    otsune 2009/07/21
  • Event Driven JavaScript - os0x.blog

    document.createEventとdispatchEvent、addEventListenerを使ってイベントドリブンに書いたJavaScriptがオレブーム(ただし、IE非対応*1 )なので、軽く紹介してみたいと思います。 具体的には、AutoPatchWork (Google Chrome Dev用のextension)をイベントドリブンで実装しています。 AutoPatchWork.jsが2009/06/11 21:00時点のソース(id:nanto_viのコメントをうけて#を.に変更済み)。シンプルさを重視しているので、324行と短めです(CSSは別ファイルですが)。 window.addEventListener('scroll', check_scroll, false); window.addEventListener('AutoPatchWork.request',

    Event Driven JavaScript - os0x.blog
    otsune
    otsune 2009/06/11
  • Google Chrome 2.0のUserScriptsはGreasemonkey互換のようで、そうではない - os0x.blog

    嵌る人がいそうなので、先に書いておきます。 User Scriptsを書いてみると GM_系のAPIが一通り定義されていて、一見Greasemonkeyと互換性がありそうに見えますが実はほとんど機能していません。 実装は http://src.chromium.org/viewvc/chrome/trunk/src/chrome/renderer/resources/greasemonkey_api.js?view=log にあるんですが、例えば GM_[gs]etValueはlocalStorageを使っていて、(これはChrome 3.0 で実装される予定、つまり未実装なので)使うとエラーになります。 そのほかも、中身は throw new Error("not implemented."); となっていて、使うとエラーをぶん投げてきます(typeofとかでチェックしても使えるかわから

    Google Chrome 2.0のUserScriptsはGreasemonkey互換のようで、そうではない - os0x.blog
    otsune
    otsune 2009/05/24
  • JavaScriptの勉強会資料 - os0x.blog

    JavaScript社内勉強会|渋谷ではたらくベンチャーCTOのブログ 実践JavaScript - Event編 - 株式会社ALBERT 勉強会資料 月一で講師をしている、社内向けJavaScript勉強会の資料です。 初回はEvent周りの一般的な話(実際、割と良く目にするネタばかりだと思います)だったので、(かなり整形して)資料を公開しました。2回目は内輪ネタだったので、公開はなしです。次回(もう来週)はprototypeとか、thisの話とかにしようと思います。こちらは公開予定です。 資料は取説 正規表現をベースに、HTML5を意識してみたり、CSSHTMLタグの可視化 - 0xFFしてみたりといった感じです。pタグが少しうるさい感じはしますが、割と綺麗な資料になったかなーと思います(まだしっくりしない部分はありますが、細部にこだわってもキリがないので)。 さて、資料作りをしな

    JavaScriptの勉強会資料 - os0x.blog
    otsune
    otsune 2009/05/24
  • はてなダイアリーを軽くする設定 - os0x.blog

    『「このエントリーのブックマークコメント」アイコンを表示する』をOFFにする*1 ←このアイコンのこと。 効果のほどは下記の画像でご納得いただけると思います。 ON OFF なんでこんなことに 以前どこかで読んだんですが、はてなスター以前はどのJavaScriptライブラリを使うかといったルールがなかったそうです。 実際、ブックマークコメント表示機能が実装されたのは結構古く、当時Prototype.jsの対抗馬として注目されていたMochiKitを使って実装されています。上の画像の差分はすべてMochiKit関連のものです。 今となっては Ten.js への統合が進んでいるので、早めにこの機能も実装しなおしてほしいです。 きっかけ:DragonflyのNetworkタブがちょっと実用的になってる - もし高校野球の女子マネージャーがOpera Browserを使ったら - チーム俺等 ちな

    はてなダイアリーを軽くする設定 - os0x.blog
    otsune
    otsune 2009/05/11
  • AutoPagerizeの動作の流れ - os0x.blog

    AutoPagerize くらいは - twwp宛て。 家swdyh版について(oAutoPagerizeも主な流れは同じだけど)、ざっくりと処理の流れを(細かいところやメインでない部分は省いています)。 ページの読み込み→Greasemonkey起動(この辺は省略)、AutoPagerize起動 SITEINFOの読み込み SITEINFOの期限が切れていた場合、wedataから最新を取得 URLにマッチするSITEINFOがあるかチェック、なければ終了 SITEINFOのXPathが機能しているかチェック、XPathで要素を取れなかったら終了 初期化処理 次のページのURL取得 差込位置の決定、insertBeforeか、pageElementの最後の次の要素 右上アイコン・ヘルプの設置 スクロール監視の開始 読み込み開始位置の決定(どこまでスクロールしたら次のページを読み込むかは、

    AutoPagerizeの動作の流れ - os0x.blog
    otsune
    otsune 2009/05/10
  • 「JavaScriptでconcatはもう使うべきではないのかも」なんてことはない - os0x.blog

    JavaScriptでconcatはもう使うべきではないのかもしれない (Kanasansoft Web Lab.)に早まるなとツッコミを入れる。 まず、当たり前ですがpushを使うべきところでconcatを使う理由はありません。配列に要素を追加したいならpushを使うのは当然ですね。 あえてconcatを使うのは配列を複製したい場合です。*1 で、複製する場合のベンチをとってみました。 http://ss-o.net/test/array_clone.html Firefoxは配列の長さが大きくなってくるとpushのほうが高速になる傾向が見られるものの、基的にconcatのほうが安定して高速です。なにより、配列を複製していることが明確なconcatを使わない理由はありません。 ちなみにIE8はconcatが最適化されているらしく、上記ベンチではっきりとした差が出ます。シンプルに書いてお

    「JavaScriptでconcatはもう使うべきではないのかも」なんてことはない - os0x.blog
    otsune
    otsune 2009/04/24
  • JavaScriptは悪くない - os0x.blog

    JavaScript の不思議な面白さ - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 第二回 - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 第三回 - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 第四回 - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 第五回 - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 第六回 - Yahoo! JAPAN Tech Blog JavaScript の不思議な面白さ - 最終回 - Yahoo! JAPAN Tech Blog のシリーズがJavaScriptの面白さよりも、暗黒面ばかり伝えてしまっている印象で、連載モノだか

    JavaScriptは悪くない - os0x.blog
    otsune
    otsune 2009/04/10
  • Google Chrome 2.0.170のGreasemonkeyとoAutoPagerizeについて - os0x.blog

    Google Chrome 2.0.170から、Greasemonkey(というか、UserScriptsって言うべきか)の実装が変わり、oAutoPagerizeが動かなくなっていたので修正しました。体、SITEINFO(必要であればSettingsも)全て更新の必要があります。 oAutoPagerize - 0xFF 以下、中の話。 今までは各スクリプトがグローバルスコープで実行されていましたが、2.0.107から各Scriptごとにスコープが作られるようになって、FirefoxのGreasemonkeyの実装に近くなりました。 Firefox版でいうunsafeWindowとして、contentWindow というグローバルオブジェクトが用意されています。(例えば、ページがjQueryを使っていた場合、 window.jQuery は undefined で、代わりに conte

    Google Chrome 2.0.170のGreasemonkeyとoAutoPagerizeについて - os0x.blog
    otsune
    otsune 2009/03/19
  • 大量に同じ画像を表示したいとき - os0x.blog

    画像周りの速度メモ - #生存戦略 、それは - subtechの件。 最終手段として、CSSを使う。 .hatenastar{ display:inline-block; width:11px; height:10px; background:url('http://s.hatena.ne.jp/images/star.gif'); } (function(){ var now = new Date*1; for (var i = 0; i < count; i++) { var span = document.createElement('span'); span.className = 'hatenastar'; container.appendChild(span); } document.title += ' css:' + ((new Date*1) - now); })();

    大量に同じ画像を表示したいとき - os0x.blog
    otsune
    otsune 2009/03/16
  • シンプルな$X関数(simple dollar X) - os0x.blog

    cho45さん作の$X関数を極力シンプルにした、Greasemonkeyで@require するようの$X関数を書きました。 http://gist.github.com/2040 からどうぞ。 家$Xが登録されました http://gist.github.com/3238 なので、それにあわせてforkとして登録し直しました。http://gist.github.com/3242 うん、forkにしておくと関係がわかっていい感じ。gist素晴らしいなぁ 追記: http://twitter.com/snj14/statuses/872567670 を採用してみた Greasemokeyが.user.jsで終わるページをインストールしようとしてしまう件の回避 - 0xFFで実際に使っています。 // @require http://gist.github.com/3242.txt こんな

    シンプルな$X関数(simple dollar X) - os0x.blog
    otsune
    otsune 2009/03/01
  • Twitter用Greasemonkey修正とuserscripts.orgへアップ - os0x.blog

    遅くなりましたが、TwitterHTML変更で動かなくなっていたScriptを修正しました。 修正が遅くなったのは、主にXREAのFTPに繋がらなくて……、仕方なくhetemlに移転し、結局はuserscripts.orgにあげました。 こっちが見やすいかなos0x's scripts - Userscripts.org 個別: twkkyd_for_Opera for Greasemonkey twitter stop focus for Greasemonkey Twitter Post Anywhere for Greasemonkey Twitter MultiPlayer for Greasemonkey Twitter decode Tinyurl for Greasemonkey Add TwitterKensaku for Greasemonkey 基的に機能的な変更は

    Twitter用Greasemonkey修正とuserscripts.orgへアップ - os0x.blog
    otsune
    otsune 2009/02/11
  • どう書くXPath:ここからここまで - os0x.blog

    XPathの不便なところ - ぶろぐ。@はてなより、http://labs.cybozu.co.jp/blog/akky/archives/2009/02/interviewd-by-junior-high.html文を取るXPathを考えてみた。 とりあえず、2パターン。*1 id("center")/div/*[preceding-sibling::*[following-sibling::h2] and self::*[not(preceding-sibling::p[@class="posted" and a])]]id("center")/div/*[self::h2[following-sibling::h3] or (preceding-sibling::h2 and following-sibling::p[@class="posted" and a]) or self

    どう書くXPath:ここからここまで - os0x.blog
    otsune
    otsune 2009/02/09
  • ブラウザの体感的な速さにおけるJavaScriptの比重は大きくないので、CarakanでOperaが劇的に高速化されるかのような期待を抱くべきではない - os0x.blog

    Opera Core Concerns - Carakan 【速報】Opera新JavaScriptエンジンCarakan発表、50倍高速化も | エンタープライズ | マイナビニュース まー、もちろん劇的な違いを体感できるケースはあるだろうけど、少なくとも3Dとかハッシュとかの演算*1が速くなってもあんまり嬉しくないでしょう。 個人的にはClient-side Database Storageが載るかどうかが問題です。 # ちなみに、Firefoxは別で、体感的な速さにおけるJavaScriptエンジンの比重が大きい(アドオンとかが高速になる)ので、JITの効果に期待したいところ 体感的な速さとは、例えば「Ctrl+t押したときに新しいタブが何msで表示されるか」とか。Firefoxはこういうところが弱かったりする。IE7はもっと弱かったりする。 *1:[http://d.hatena.

    ブラウザの体感的な速さにおけるJavaScriptの比重は大きくないので、CarakanでOperaが劇的に高速化されるかのような期待を抱くべきではない - os0x.blog
    otsune
    otsune 2009/02/09
  • JavaScriptによるブラウザ判別の実際 - os0x.blog

    1 行でブラウザ判別を行うスクリプト (IE 用の日語紹介記事、Firefox、Safari 用の日語紹介記事) を発端に、SpiderMonkey の判別とブラウザ判別: Days on the Moon や JavaScript でのブラウザ判別 - 「仕様の盲点」ではなく、「プロパティの有無」を使う方がマシ - 2009年2月 - Blog - EOFなどの記事があがっています。 ここでは少し実際的なケースごとにサンプルコードを紹介していきたいと思います。(サンプルコードは適当に書いているので、不正確な箇所があるかもしれません。ご了承ください。間違い等ご指摘いただけると助かります。) なお、これらは汎用的なJavaScriptライブラリを使っていれば意識しなくても良いケースがほとんどです。 分岐する必要がないケース 分岐する必要がないなら、ケースとしてあげる必要はないと思われるか

    JavaScriptによるブラウザ判別の実際 - os0x.blog
    otsune
    otsune 2009/02/02
  • カスタムAutoPagerize - os0x.blog

    以前書いた、AutoPagerizeにインクリメントモードとURLフィルターを追加するプラグインを書いてみた - 0xFFがevalの第2引数廃止により動かなくなっていたので、体に手を入れるという反則技で対応しました。さっぱりメンテできてないので、消しました。すみません。 404 · GitHub http://github.com/os0x/autopagerize/raw/master/autopagerize.user.js http://github.com/os0x/autopagerize/raw/master/miscautopagerize.user.js 2つともインストールして、miscのほうが先に実行されるように調整してください。 てか、元々は「インクリメントモードとURLフィルターを追加」してたのだけど、今では、Google画像検索への対応と英辞郎 on the

    カスタムAutoPagerize - os0x.blog
  • wedataのダウンでAutoPagerizeが動かない(効かない)件 - os0x.blog

    wedataが落ちているためAutoPagerizeが動かないという状態が年末から断続的に続いています。 追記(2009/01/09):wedataが復旧し、正常にSITEINFOを取得できるようになった模様です。これに伴い、http://ss-o.net/databases/AutoPagerize/items.json の中身は空の配列になっています。うちのミラーを使用したいという方は、 http://ss-o.net/json/wedataAutoPagerize.json のJSONを利用いただけます。静的ファイルでgzipにも対応しているので、wedataより軽いはずです。ただし、wedataとの時間差があり、callback指定(JSONP)もできません。どっちが良いか分からない場合はとにかく最新のAutoPagerizeを使っておけばOKです。 追記(2008/12/24 1

    wedataのダウンでAutoPagerizeが動かない(効かない)件 - os0x.blog
  • リンクになっていないURLを新規タブで開くGreasemonkey Script - os0x.blog

    Text URL Linker という Greasemonkey Script を CodeRepos (と Text URL Linker for Greasemonkey) にあげました。Firefox の Greasemonkey, Opera(9.50以降) の UserJavaScript, Safari の GreaseKit, Google Chrome の Greasemetal, Chromium の Greasemonkey で動作します。 はてなダイアリーのコメント欄など、リンクになっていないURL (一応 ttp://hoge のようなURLにも対応) を新規タブで開くリンク(通常のリンクと区別するため overline 入りカーソルをhelp) にする Script です。Firefox の人には Piro さんの Text Link でお馴染みのあれです。同種の

    リンクになっていないURLを新規タブで開くGreasemonkey Script - os0x.blog
    otsune
    otsune 2008/12/15