Как узнать, какой элемент был выбран с помощью crossrider contextMenu

Данные, возвращаемые обратным вызовом для appAPI.contextMenu, в настоящее время являются только следующими:

  • URL-адрес страницы
  • URL-адрес ссылки
  • выбранный текст
  • srcUrl

Не похоже, что есть способ сказать, что на самом деле было щелкнуто правой кнопкой мыши, только небольшая информация об этом. Я мог бы, например, выполнить поиск по всем изображениям и найти то, которое соответствует srcUrl, но что, если одно и то же изображение появляется несколько раз?

Я мог бы попытаться перехватить события щелчка правой кнопкой мыши в extension.js и попытаться сопоставить их с событиями контекстного меню, но это кажется довольно крутым.

Каков ожидаемый метод поиска выбранного элемента (после получения событие на странице)?

Скажем, например, я хочу иметь возможность щелкнуть правой кнопкой мыши изображение и display:none его.


person jozxyqk    schedule 03.04.2014    source источник


Ответы (2)


В настоящее время платформа Crossrider не поддерживает необходимую вам функцию, и я думаю, что ваш обходной путь разумен. Тем не менее, я передал ваше предложение команде разработчиков Crossrider, которая рассмотрит его для будущих выпусков.

[Раскрытие информации: я сотрудник Crossrider]

person Shlomo    schedule 03.04.2014
comment
Есть статус по этому поводу? Была бы полезная функция. - person FDM; 20.11.2014

В качестве обходного пути это на самом деле кажется довольно надежным, хотя я мало проверял. TBH Я ожидал проблем с согласованностью:

//in extension.js (background.js just forward context menu events)
var lastRightClicked = null;
window.addEventListener("contextmenu", function(e) { //I guess a mousedown event would work here too
    lastRightClicked = e.target;
}, true);

appAPI.message.addListener({channel:"contextmenu"}, function(message) {
    if (message.menuitem == "Hide")
        lastRightClicked.style.display = "none";
});
person jozxyqk    schedule 04.04.2014