2016-11-12 10 views
0

contextMenuのいずれかを重複させると除外する方法はありますか?
例:
編集可能選択の2つのコンテキスト項目があります。状況で
これらのタイプの両方は、(編集可能な内部の選択)と一致chrome.contextMenus除外タイプ

enter image description here

Chromeは両方のアクションのためにサブメニューを与えます。
私は1つしか持っていません。
この特定の状況で、これらのタイプのいずれかを優先順位付けまたは除外するにはどうすればよいですか?

+2

2つを 'chrome.contextMenus.create'呼び出しにまとめると、メニュー項目は1つだけ表示されます。それはあなたのための選択肢ですか? –

+0

@RobWいいえ、残念ながら私はこれらの2つのアクションが必要です。重複している状況でのみ、注記**を優先してください。http://prntscr.com/d6gc24 –

答えて

1

メニュー項目のタイプが同じ(つまり同じタイプ、タイプなど)の場合は、コンテキストメニューを宣言して複数のコンテキストを指定できます。コンテキストのいずれかが一致するとメニュー項目が表示されます。 「選択」のコンテキストのための「メモしておいてください」とのタイトル

  • メニュー項目:

    は、あなたが、しかし、あなたが本当に別のコンテキストメニューの宣言が必要であることを述べてきました。
  • タイトルが「編集可能」コンテキストの「メモを挿入」のメニュー項目。
  • タイトルが付いたメニュー項目は、両方のコンテキストが適用されるときに「メモを作成」します。入力フィールドでテキストが選択されたとき(「メモを挿入」メニュー項目なしで)

contextMenus APIは、この使用例を直接サポートしていません。したがって、次善策は、第3の状況でコンテキストメニューが表示される前に「編集可能」のコンテキストメニューを削除することです(3番目の状況がもはや適切でない場合はコンテキストメニューを復元する)。

状況によっては、ユーザー(de)がテキストを選択したときを検出するのにselectionchangeを使用します。テキストを選択したら、入力フィールドが選択範囲にあるかどうかをチェックします(SelectionRange、DOM(トラバーサル)APIを組み合わせることができます)。入力フィールドが見つかった場合は、目的のコンテキストメニュー項目を削除します。 メニュー項目が見つかったかどうかに関わらず、キーおよび/またはマウスイベントのリスナーを追加して、ユーザーのポインターが入力フィールドにあるかどうかを検出します。

selectionchangehttps://stackoverflow.com/a/13673942/938089)とShowing context menu buttons only when right-clicked on classes that start with “Story”の1つを使用する例を次に示します。

+0

Robありがとうございます。私はこれを達成するための唯一の方法だと考えていますが、私のニーズには過剰です。私はそれをそのまま残す(サブメニューバージョンで)。 –

関連する問題