IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

ajouter un onevent sur un <img>


Sujet :

JavaScript

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 4
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  2. #2
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    De mémoire (pas de pc sous la main pour tester) je dirai :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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. :-)

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 4
    Par défaut
    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.

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    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 !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre Expert Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Par défaut
    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 ?

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. Ajouter un tooltip sur une image
    Par K4sh dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 14/10/2005, 19h12
  2. Ajouter du texte sur une vidéo
    Par ChIcKeN78 dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 01/06/2005, 10h43
  3. Réponses: 6
    Dernier message: 18/04/2005, 21h12
  4. Problème d'ajout d'imprimante sur LPT1
    Par arnaud_verlaine dans le forum Périphériques
    Réponses: 10
    Dernier message: 15/03/2005, 22h23
  5. ajout de colonnes sur une selection
    Par DaxTaz dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/08/2004, 17h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo