chrome.contextMenus : Selectionner un element via le click

Par Tydoo, il y a 8 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

J'utilise une extention chrome et son menu contextuel afin de m'aider dans le developement.

Le but ici, est de faire un clic droit sur un input ou un textarea et d'insérer un timestamp via le menu contextuel.

J'arrive a créer le menu contextuel et d'effectuer la function "insertTimestamp" au click.

let insertTimestamp = function(a, b) { let timestamp = Math.floor((new Date()).getTime() / 1000); console.log('Timestamp : ' + timestamp) console.log('Timestamp inséré !') console.log(a) console.log(b) } chrome.contextMenus.create({ "title": "Insérer un timestâmp", "contexts" : ["editable"], "onclick": insertTimestamp })

Au clic, les valeurs des variables :

"a" vaut : editable : true frameId : 0 menuItemId : 26 pageUrl : "https://www.google.fr/_/chrome/newtab?espv=2&ie=UTF-8" "b" vaut : active : true audible : false autoDiscardable : true discarded : false favIconUrl : "https://www.google.fr/favicon.ico" height : 940 highlighted : true id : 257 incognito : false index : 8 mutedInfo : Object openerTabId : 213 pinned : false selected : true status : "complete" title : "Nouvel onglet" url : "chrome://newtab/" width : 2071 windowId : 1

Le soucis c'est que je ne sais pas comment selectionner l'element html ou le click droit est fait, afin d'y rajouter le timestamp

Avez vous des idées de comment faire ?

Merci

3 réponses

Tydoo, il y a 8 ans

Alors "ev.target" ne fonctionne pas.

Par contre j'ai un autre soucis.

Pour pouvoir selectioner l'element, je doit inséré un js dans la page via l'extention.

all.js => Pour toutes les pages.
background.js => Page qui tourne en ariére plan et qu'il n'est pas lié au page (donc un $('body') ne récupére pas le body de l'onglé ouvert).

Comment faire la jointure en ces deux JS ?

Code de all.js : Au click droit, je rajoutes le timestamp dans l'atribue "data-iddevblocs"

let timestamp = Math.floor((new Date()).getTime() / 1000); $('input').each(function(e) { $(this).on('contextmenu', function(ev) { $(this).attr('data-iddevblocs', timestamp) }) })
Benjamin Derepas, il y a 8 ans

Pour détecter le click droit (le menu contexuel) tu peux utiliser contextmenu :

el.addEventListener('contextmenu', function(ev) { ev.preventDefault(); });
tyrants, il y a 8 ans

Exact, ensuite avec un "ev.target" tu obtiendras l'élément ciblé par ce clic droit.