for Firefox #5

またしても window と unsafeWindow の違い。Add-on SDK のコンテントスクリプトにおいては、window はおなじみの Window ではない不思議なグローバルオブジェクトである。ページのグローバルオブジェクトとしては unsafeWindow を参照する。なぜそんな殺風景な命名なのかはわからない。contentWindow でいいと思うのだけど。

  • すでに何らかの動作にイベントリスナが結び付けられている時にそのリスナを呼び出したい際、リスナを直接呼び出すのではなく、コードから擬似的にイベントを発生させる手法をよく使う。リスナがスコープになくてもよくなるので。そういう場合、document.createEvent(…) して、init*Event(…) して、目的の要素に対して dispatchEvent(…) する。これが上手く行かない。init*Event() の引数内に view オブジェクトとして window を渡すとエラーになる。解法は window.unsafeWindow が存在する場合はそちらを渡す。
  • CustomEvent に対しても同様。
  • pushstate イベントをリスンしている。その状態で location.hash を更新すると Firefox でだけ pushstate イベントが発生する。どのブラウザで動作している場合hも、location.hash を更新するときは一時的に pushstate のイベントリスナを取り外すよう修正。

2 thoughts on “for Firefox #5

  1. 赤福プラスで手書きが出来るようにしてくだち!
    現状は普通のレスは出来るけど手書き切り替えボタンが無くて描けないんですけお!

    Opera12.17 赤福プラス3.1.169

Leave a Reply

Your email address will not be published. Required fields are marked *