Closed utubo closed 6 years ago
イベント案コレで安全に行けそう?重そう…
let s = Components.utils.Sandbox(window);
s.SimpleGestureEventDetail = { gesture: gesture, target: targetNode };
s.evalInSandbox(() => {
SimpleGestureEvnetDetail.target(new CustomEvent('simplegesture', { details: SimpleGestureEventDetail }));
})
スクリプトで設定1個案はこうかな…
let s = Components.utils.Sandbox(window); // ←コストかかりそうなので実際はキャッシュしておく。
s.SimpleGesture = { gesture: gesture, target: targetNode };
let result = s.evalInSandbox(SimpleGesture.ini.script); // すごく重そう
if (result === false) e.preventDefault();
で、設定画面で以下の通り設定してもらう。
if (SimpleGesture.gesture === 'L-R-L-R') {
alert(’Hello world');
return false; // preventDefault.
}
めんどくさい。 evalに渡す文字列が大きくなるから重そう
executeScriptでできました。 ソースが大変なことになったので整頓してからコミットする。
機能を追加していくとキリがないのでユーザーにおまかせしたい。 脆弱性に気をつけないとマズイ。 ジェスチャの起点を渡せるかは怪しい
スクリプトを実行するなら evalInSandboxを使う。 サイズが大きくなるかもしれないので既存のiniとは別に持ちたい。 設定画面が面倒。作るのも使うのも面倒。 設定1個にして「頑張って分岐させろや!」のスタンスだと作るの楽だなぁ。でも解りづらいよなぁ スクリプト書いちゃえば↓も実現できる。
アドオンと連携なら ”simplage_gesutre"って名前で、detailsは {gesture: "L-R-L-R" }みたいにカスタムイベント発行する。 特権有りのコードから無しのドキュメントへ発行するの大丈夫?→念のためevalInSandbox使っとく? わるいぺーじでジェスチャを利用されたらやだなぁ 常に発行しちゃえばいいので設定画面が要らない。イベント捕まえる側が頑張る。 他のアドオンをこっちのアドオンに依存させちゃうのがとても微妙