Bagaimana cara mengubah pintasan keyboard untuk menu konteks Firefox?


1

Saya mencoba mengubah pintasan keyboard untuk menampilkan menu konteks di Firefox (setara dengan menekan Shift-F10pada Linux atau Windows atau Control-Spacepada OS X). Sepertinya pintasan ini ditangani pada tingkat yang berbeda dari pintasan keyboard normal (tidak muncul di ekstensi Keyconfig yang memungkinkan pemetaan ulang sebagian besar pintasan keyboard).

Saya telah mencoba membuat acara kunci dan mouse untuk memicu menu konteks (menggunakan kode berikut yang dipetakan ke jalan pintas dengan Keyconfig) tetapi mereka belum berfungsi sejauh ini. Saya belum dapat melacak di mana dalam kode sumber Firefox menangani pintasan keyboard untuk menu konteks atau jika ada satu fungsi yang dapat saya panggil untuk menunjukkannya.

Acara mouse:

var focused = document.commandDispatcher.focusedElement;
if(!focused) focused = document.commandDispatcher.focusedWindow.document.activeElement;
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 2, null);
focused.dispatchEvent(evt);

Acara utama:

var focused = document.commandDispatcher.focusedElement;
if(!focused) focused = document.commandDispatcher.focusedWindow.document.activeElement;
var evt = document.createEvent("KeyboardEvent");
evt.initKeyEvent("keypress", true, true, null, false, false, true, false, 0x79, 0);
focused.dispatchEvent(evt);

Jawaban:


0

saya bukan ahli tetapi apakah Anda mencoba untuk menemukan pengaturan di about: config?

jika tidak maka masukkan about: config di kotak lokasi dan tekan enter dan Anda akan menemukan banyak pengaturan di sana dan katakan padaku apakah Anda menemukan pengaturan di sana atau tidak.


Terima kasih untuk sarannya. Saya tidak menemukan preferensi yang relevan di dalam about:config, tetapi saya memeriksa pada komputer yang berbeda dari yang saya awalnya gunakan ketika saya mengajukan pertanyaan dan menemukan bahwa saya benar-benar membuat jalan pintas di Keyconfig pada komputer itu (dan saya hanya menyadarinya dengan melihat ke dalam about:config). Dari jalan pintas lama itu, saya menghasilkan jawaban saya.
ws_e_c421

0

Saya menemukan bahwa pertanyaan yang sama ini telah ditanyakan sebelumnya di MozillaZine di sini . Solusi itu menempatkan menu konteks di sudut kiri atas layar. Saya mencoba menggunakan solusi yang diberikan untuk pertanyaan lain ini tentang mendapatkan posisi layar DOM untuk menghasilkan kode di bawah ini yang menempatkan menu konteks lebih dekat ke elemen aktif, tetapi masih buggy (kadang-kadang menu agak jauh dari elemen):

var target = (document.commandDispatcher.focusedElement || document.commandDispatcher.focusedWindow.document.documentElement);

var screenX=0;
var screenY=0;
if ("boxObject" in target) {
  screenX=target.boxObject.x;
  screenY=target.boxObject.y;
} else {
  var box;
  try {
    box = elem.getBoundingClientRect();
  } catch(e) {}

  // Make sure we're not dealing with a disconnected DOM node
  if (box) {

    var body = document.body,
      clientTop = document.documentElement.clientTop || body.clientTop || 0,
      clientLeft = document.documentElement.clientLeft || body.clientLeft || 0,
      scrollTop = window.pageYOffset || body.scrollTop,
      scrollLeft = window.pageXOffset || body.scrollLeft,
      top = box.top + scrollTop - clientTop,
      left = box.left + scrollLeft - clientLeft;
  }

  screenX=target.offsetLeft;
  screenY=target.offsetTop;
}

var e = document.createEvent("MouseEvents");
e.initMouseEvent("contextmenu", true, false, null, 0, screenX, screenY, 0, 0, false, false, false, false, 0, null);
target.dispatchEvent(e);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.