FireGesturesのマウストレイルが有効な場合に、はてなダイアリーの編集画面でコンテキストメニュー操作が不便になるやつの対策方法

FireGestures 1.5.6

症状

はてなダイアリー編集画面の入力欄で右クリックするとスクロールは一番上になり、そのまま貼り付けると一番最後の位置に貼り付けされる。


不便だなーってつぶやいていたら、id:Yuichirou さんが原因を教えてくれたので対策できないかやってみた。

ちなみにアドオンの設定からマウストレイルを無効にすればコードを追加しなくても問題は解消されます。



プロファイルのフォルダのextensions\firegestures@xuldev.org\componentsにあるxdGestureHandler.jsの430行目の下に一行追加します。こんな感じ。

createTrail : function FGH_createTrail(event) {
    var doc;
    if (event.view.top.document instanceof Ci.nsIDOMHTMLDocument)
        doc = event.view.top.document;
    else if (event.view.document instanceof Ci.nsIDOMHTMLDocument)
        doc = event.view.document;
    else
        return;
    if (/^http:\/\/d\.hatena\.ne\.jp\/\w+\//.test(doc.URL) && event.target.tagName === "TEXTAREA") return; //はてダ編集画面対策
    var insertionNode = doc.documentElement ? doc.documentElement : doc;
    if (doc.getBoxObjectFor) {

このコードによる影響は、はてなダイアリー内のtextarea上でコンテキストメニュー(右クリックメニュー)を開いた場合のみマウストレイルが描画されなくなります。textarea以外の場所からは通常動作です。

ちゃっちゃっとしかテストしてないのであれですがこれによる不具合はないと思います。


追記
編集、下書き、デザイン編集などのページでも対策する必要があったので以下のように変更しました。追加する場所は同じです。

if (/^http:\/\/d\.hatena\.ne\.jp\/\w+\/edit/.test(doc.URL)) return;
↓
if (/^http:\/\/d\.hatena\.ne\.jp\/\w+\//.test(doc.URL) && event.target.tagName === "TEXTAREA") return;