Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/01/2011, 18h52   #1
Invité de passage
 
Inscription : juin 2004
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 4
Points : 2
Points : 2
Par défaut ajouter un onevent sur un <img>

Bonjour,

Voilà longtemps longtemps que je ne fais plus du JS et là je suis bloqué. Et vous allez probablement râler, c'est un photographe commanditaire d'un site qui veut absolument bloquer le clic droit. Je lui ai expliqué la facilité à contourner la chose, mais il persiste... Pour limiter les dégâts, je veux interdire le clic droit sur les images en grande taille, contenues dans un <div id="cboxLoadedContent">.
Ne voulant pas intervenir (et où ?) dans le plugin php qui génère ce code, je voudrais utiliser un javascript pour rajouter un
Code :
oncontextmenu='return false'
dans le <div>. Ce qui fonctionne quand je l'introduit dans le div en HTML.
Malheureusement le code suivant ne fonctionne pas :
Code :
document.getElementById("cboxLoadedContent").oncontextmenu = "return false";
quand je l'écris en fin de HTML et en début, il ne reconnaît évidemment pas "cboxLoadedContent".
Que faire ?
marabbeh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 19h02   #2
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 847
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 847
Points : 1 344
Points : 1 344
De mémoire (pas de pc sous la main pour tester) je dirai :


Code :
document.getElementById("cboxLoadedContent").oncontextmenu = function(){ return false; };


Pour protéger ton image, utilise en plus une url unique avec session, pour que le lien de l'image ne puisse pas être appelé 2 fois. Ça + ton oncontext ça limitera déjà énormément la casse. :-)
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 19h18   #3
Invité de passage
 
Inscription : juin 2004
Messages : 4
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 4
Points : 2
Points : 2
Mon problème n'est pas résolu... mais ce que tu m'écris fonctionne bien. Il y a autre chose... je ne sais pas quoi... Je creuse.
marabbeh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 19h20   #4
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
Même si ta syntaxe devrait logiquement fonctionner, ce n'est manifestement pas fait exprès et la syntaxe de Willpower est la bonne.

Pourquoi ça devrait fonctionner : parce qu'en redéfinissant la propriété oncontextmenu, ben le comportement par défaut est inhibé. En fait, un événement oncontextmenu crée une fonction anonyme, dans ton exemple, cette fonction retourne la chaine de caractères "return false;" et ne fait rien d'autre.

Pourquoi ça ne fonctionne pas : parce que tu fais l'affectation sur la div, donc tu inhibes le menu contextuel pour elle, mais tu n'empêches pas la propagation de l'événement (l'équivalent booléen de la chaine de caractères retournée est true ) et le menu contextuel sur l'image est toujours actif
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 19h46   #5
Membre Expert
 
Avatar de Willpower
 
Homme Boris Dessy
sans emploi
Inscription : décembre 2010
Messages : 847
Détails du profil
Informations personnelles :
Nom : Homme Boris Dessy
Localisation : Belgique

Informations professionnelles :
Activité : sans emploi

Informations forums :
Inscription : décembre 2010
Messages : 847
Points : 1 344
Points : 1 344
Citation:
Envoyé par Bovino Voir le message
Même si ta syntaxe devrait logiquement fonctionner, ce n'est manifestement pas fait exprès et la syntaxe de Willpower est la bonne.

Pourquoi ça devrait fonctionner : parce qu'en redéfinissant la propriété oncontextmenu, ben le comportement par défaut est inhibé. En fait, un événement oncontextmenu crée une fonction anonyme, dans ton exemple, cette fonction retourne la chaine de caractères "return false;" et ne fait rien d'autre.

Pourquoi ça ne fonctionne pas : parce que tu fais l'affectation sur la div, donc tu inhibes le menu contextuel pour elle, mais tu n'empêches pas la propagation de l'événement (l'équivalent booléen de la chaine de caractères retournée est true ) et le menu contextuel sur l'image est toujours actif
J'ai l impression qu il y à des phrases qui ne veulent rien dire, alors soit t as autant la tête dans le [censure]duo de protubérances au bas de la colonne vertébrale [/censure] que moi en ce moment, soit je suis degommé au points de ne plus les comprendre.


Sinon, es tu certain que la propagation ne se fait pas ? Je trouve ça étrange..


Marabbeh > quel est le problème persistant ?
Willpower est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2011, 19h54   #6
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 802
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 802
Points : 35 807
Points : 35 807
Citation:
Envoyé par Willpower
J'ai l impression qu il y à des phrases qui ne veulent rien dire, alors soit t as autant la tête dans le cul que moi en ce moment, soit je suis degommé au points de ne plus les comprendre.

Ben j'ai eu beau relire, moi je me comprends, ce qui du coup ne me rassure pas du tout


Citation:
Envoyé par Willpower
Sinon, es tu certain que la propagation ne se fait pas ? Je trouve ça étrange..
Je parle du code de marabbeh :
Code :
document.getElementById("cboxLoadedContent").oncontextmenu = "return false";
Dans celui que tu as proposé (et qui est juste), effectivement, la propagation ne se fait pas, de la même façon que dans l'exemple d'événement inline (sous forme d'attribut) de marabbeh...
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h54.


 
 
 
 
Partenaires

Hébergement Web