拡張機能内でGET/POSTをするのはXmlHttpRequestがお手軽ですが、ファイルのアップロードはできないのでファイルのアップロードをしたいときは努力が必要です。 前にソースコードを追ってFirefox内部でどうやってファイルをアップロードしてるのか調べたのですが、地味にふつうにアップロードしていたのでまねしてPostFormMultipart.jsというのを書きました。 今思うとFlock - The Social Web Browserからファイルをアップロードしているコードを探せば見つかったと思います。 2007.10.23 もうちょっとほかから使いやすいように修正。 Technorati Tags: javascript You’re currently reading “拡張機能でmultipart/form-dataをPOSTするためのスクリプト PostFormMul
IMEをオフにするFirefox拡張IMEOFFを書いたときのメモ。 JavaScriptはbrowser.xulにオーバーレイしてるファイルだけ。別ファイルにしてscript要素でロードするよりも速いと思うんだけど、どうなんだろ。ウィンドウを開く時とかに効いてきそう。 IME制御、FlashLDRの棒人間に怒られないようにするGreaemonkeyスクリプト(Windows限定) - AUSGANG SOFT パスワードを入力するinput要素にフォーカス当ててIMEをオフにする方法がある。けど、オフにしてフォーカス外してinput要素削除したりしてると、[Home]とか[PgUp]とかのキーが使えなくなる。XULとかXPCOMで制御する方法も見つからなかったのでFlashを使うことに。 Adobe - デベロッパーセンター : Flash Player 8 のセキュリティ機能の変更点
タイトルママ。Firefox で firebug つかってる時に結果をクリップボードに入れたい!firebug のコンソールをコピペすると改行が無くなってレイアウトが乱れる!というか setClipboard(scg.generate()) したい!と思ったのでおもむろに setClipboard() をワンライナ実装してみました。 追記・Firebug には copy というクリップボードに入れる便利 API があることを id:nitoyon さんに教えて貰いました。なんだってー! javascript:(function(){var B=document.createElement("object");document.body.appendChild(B);var A=document.createElement("param");A.setAttribute("name","al
I'm not the Scatman 昔、ふつうのファイルにWAVファイルのヘッダをくっつけて再生して聞いてみるっていうのをやったことがあって、まずたしかapacheのコアダンプでやってみた。そんなにおもしろくない。圧縮されたファイルはホワイトノイズになった。中身が均一に乱雑だからだと思われる。日本語の入った(たしかSJISだったとおもう)テキストファイルは、1バイトおきに必ず0x80より大きな値が入るのでわりと単調だった気がする。 どれもとても音楽、というか、楽しめなかった。 音楽とは関係ないけどICQのうざい打鍵音がいつしか楽しくなったのは自分のアクションに直結して音が出てるから楽しいのかなと思った。Audibleもときどきいいかんじになったりするけど、音の出方に意味が見えなくて楽しめなかった。音が出ているのが変化する、とかだとまだたのしいのかも。 なんか google toolba
Firefox、onoverflow/onunderflow、文字の溢れを検出するイベント JavaScript Event Handlers ボックス要素などで、文字の溢れが発生した時にoverflowイベントが起きる。 以下を開き、ウィンドウを小さくし文字を画面外に出すとoverflowが発生する。 逆に、拡げて文字を全て表示するとunderflowが起きる。 <html> <body> <div id="main" style="overflow:auto" >-------------------------------</div> </body> <script> var main = document.getElementById('main'); main.addEventListener('overflow', function(e){ console.log(e); },
関数とは Function を new したものというイメージがありますが。厳密にはオブジェクトに [[Call]]という内部プロパティが、ある→「関数」、ない→「関数じゃない」、ということになっています。関数がオブジェクトかどうかはプロトタイプやコンストラクタとは無関係です。 つまり typeof は内部プロパティ Call を参照することによって関数か関数でないかを判断しているということなんです。 例えば (IE では動かないです。) var f = new Function('alert("Hello!")'); f.__proto__ = Object.prototype; alert(typeof f); f(); このように、プロトタイプを差し替えても f は function なのです。 RegExp も実は関数 最近知ったのですが。Firefox では、 RegExp も関
Firefoxのソースコードを追っているうちに、たまたま1年遅れで IT戦記 - JavaScript を学ぶ際に一番重要なのに、誤解されがちな setTimeout 系の概念 の裏側がどうなっているかがわかったので、その話を。 タイマーの管理方法 そもそもjavascriptからsetTimeoutを呼ぶと、どういう仕組みで指定した時間後に渡した関数が呼び出されるようになっているのでしょう。Linuxであればsleepのように一定時間後にawakeするという処理は、タイマーリストによって管理されています。カーネルの中にN jiffies(LinuxのOS内時間の単位はjiffyと呼ぶそうです)経過後に実行することリストがあって、カーネルが4msごとに毎回タイマーリストをチェックしてやることがあったときにはそれを実行しています。 FirefoxもLinuxと同じようにタイマーリストみたいな
JavaScript YHC – Userscripts.org 長文をスライドショー形式で読むテキストリーダーです。デモビデオ(1分半)は以下。kotorikoさんの『捨松定吉』を、ランダムフィルタをかけて読んでいます。 機能説明ウィンドウ右下のGreasemonkeyメニューから[YHC]を選びスタートさせます。先に文章の一部を選択している場合はその部分を、そうでない場合は対象となる部分をマウスで指定します。 操作は主にキーで行います。 キー機能Esc終了↓ or S再生開始/停止→ or J or Space次のスライド 再生中はスピードアップ← or K前のスライド 再生中はスピードダウンGジャンプHome先頭のスライドEnd最後のスライド ↓キーで再生を開始して、→キーで再生速度を少し速くして、速すぎたら←で遅くして。気になるところに戻りたい場合は、↓で止めて、←→で移動して手動
今日徹夜ぎみで作ってみた でも 使ってみたら逆に不便だった>< 勉強になったからいいや。 破棄! もったいないので、今手元にあるソースを貼っときます このソースを Firefox インストールディレクトリ以下の components に入れると textbox 要素で autocomplete="delicious" が使えるようになります。 開発中のものなのでバグありまくりです。 ちなみに、僕が一日に書けるコードはちょうどこのくらいです↓ const Cc = Components.classes; const Ci = Components.interfaces; const Cr = Components.results; const CLASS_ID = Components.ID('{aa892eb4-ffbf-477d-9f9a-06c995ae9f85}'); const C
つい最近FirefoxのXMLオブジェクトがすごく便利なのを知りました。そして、そのXMLオブジェクトサポートのことをE4X(ECMAScript for XML)と呼んでいたというのを今知りました.... E4Xについては ECMAScript for XML (E4X) 仕様邦訳 を翻訳された nanto_viさんが書かれている E4X in Firefox が詳しいです。 しょせんはさっきE4Xがなんなのかを知った程度なのでちゃんとしたことは他のページを参照していただくことにして、11.2 左辺式 に書かれているアクセサと選別述語演算子でXPathと同じようなことができて、それがXPath以上に便利なところがありますよ、というはなしだけ書こうと思います。 E4XについてECMAScript for XML (E4X) 仕様邦訳序文には このプログラミング言語拡張は、世界中のもっとも大
てんぷれ例 // ==UserScript== // @name Test // @description Test // @namespace http://lowreal.net/ // @include * // ==/UserScript== (function () { /* GM_xmlhttpRequest({ method : "GET", url : url, headers : { "User-Agent":"monkeyagent", "Accept":"text/monkey,text/xml", }, onload : function (req) { var doc = new XML(req.responseText.replace(/^<\?xml.+?\?>/, '')); }, onerror : function (req) { alert(req.r
サーバに送っているHTTPリクエストのヘッダやレスポンスのヘッダが見られるFirefoxのextension livehttpheaders がどうやってこの機能を実現しているのか調べてみました。 HTTPリクエストを送るタイミングでイベントを捕まえることができるんだろうと予想して探してみるとLiveHTTPHeaders.jsの43行めからのaddToListener()に function addToListener(obj) { ... snip ... // Should be a new version of Mozilla/Phoenix (after september 15, 2003) var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Compone
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
Firefox の新規プロファイルを作ってから約 1 ヶ月。やっとカスタマイズが一段落ついた。 ついでなので、メモも兼ねてここに色々と記しておく。やたら長いから気を引き締めて。ちなみに、これで 1 日潰れた。 user.js user.js - Mozilla Firefox まとめサイト 基本的に about:config を開いて、そこで設定値を変更して動作確認してから user.js に書き込む。こいつに色々と書き込んで設定*1しておくと、新規プロファイル作成時に user.js をコピーしてくるだけで、基本設定*2が終わってしまうという素晴らしさ。 以下は中身。 /* ===== UI ====================================*/ // XULアプリのエラーを表示(デバッグ用) //user_pref("javascript.options.stri
Firefoxの2.0系はSQLiteを内臓してるらしいというのを偶然発見し、XPCOMを使ってローカルのSQLiteデータベースから画像データなどのバイナリをとってきてブラウザに表示したら面白いかもと思ったのでやってみた。 ちなみにXPCOM とは、mozillaのソフトウェアなどに実装されている実装言語やプラットフォームに依存しない、共通インターフェースを持つライブラリです。 例えば、firefoxのaddonを作る上で、プラットフォームの機能を利用する際に使います。OSが管理するローカルリソースにアクセスしたりとほとんど何でもできてしまいます。XPCOM自体はC で書かれていますが、JavaScriptバインディングもあるので、addonを作る際は、見た目はXULで作り、処理はJavaScriptとXPCOM(JavaScript経由)で書くのが一般的です。 この仕組みの概念図とし
作ったのは4日ほど前なんですが、なんだか公開する気力が不足していたグリモンを公開します。 Twitter_foto_expander インストール http://www.onomatope.sakura.ne.jp/program/firefox/twitter_foto_expander.user.js 2007/10/22追記アップデート http://d.hatena.ne.jp/ono_matope/20071022#1193049261 これは何? @fshin2000さんの携帯用TwitterクライアントMovaTwitterからの写真投稿機能『写ツ』を支援するGreasemonkeyスクリプトです。写ツから投稿された写真へのリンクをその場で展開します。 スクリーンショット 縦150px固定で。 その他 MovaTwitterはf:id:twitterへの投稿ですが、はてなフォ
Firefox 1.5 uses in-memory caching for entire Web pages, including their JavaScript states, for a single browser session. Going backward and forward between visited pages requires no page loading and the JavaScript states are preserved. This feature, referred to by some as bfcache (for "Back-Forward Cache"), makes page navigation very fast. This caching state is preserved until the user closes the
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く