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


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

el.addEventListener('contextmenu', function(ev) {
    ev.preventDefault();
});

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

Tydoo
Auteur

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)
    })
})