コード:
var utils = window
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindowUtils);
でnsIDOMWindowUtilsインターフェースのユーティリティを取得できますが、このユーティリティのイベント発行系の機能は基本的に、そのウィンドウ(フレーム)自身に対してしか働きません。ブラウズ領域はインラインフレーム扱いなので、トップレベルのウィンドウではなくそのフレームのnsIDOMWindowUtilsインターフェースのユーティリティを取得する必要があります。
例えばマウス系のイベントから対応するフレームのユーティリティを取得するなら、こんな感じでしょうか。
コード:
var utils = event.originalTarget.ownerDocument.defaultView
.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindowUtils);
座標ベースなら、document.elementFromPointを使う事になると思います。
コード:
var view = window;
while (true) {
let target = view.document.elementFromPoint(x, y);
if (target.localName.match(/^(iframe|frame|browser|tabbrowser)$/)
view = target.contentWindow;
else
break;
}
var utils = view.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindowUtils);
これは省略した例なので、実際にはx, yのズレやら何やらを計算しないといけませんが。