javascript desactiver clic droit sur une image

javascript desactiver clic droit sur une image - HTML/CSS - Programmation

Marsh Posté le 11-04-2010 à 01:39:21    

Bonjour tout le monde,
 
Voila je cherche a créer un script qui me permettrais d'empêcher le clic droit sur une image et d'afficher un message alert(). La difficulté du probleme vient dans le fait que ce "programme doit s'appliquer seulement une image. En effet j'arrive facilement a bloquer le clic droit sur tout la page et d'afficher un message au passage. Je peux aussi desactiver le clic droit seulement sur les images désirées. Mais je n'arrive pas à faire un mix des deux...
Si jamais une âme charitable voulait bien m'orienter j'en serais plus que ravie.
 
 
Je tiens à preciser que ceci n'est qu'un exercice et en aucun cas je ne cherche à protéger parfaitement les images de mon site, je sais très bien qu'il est impossible de protéger les images d'un site parfaitement.
 
 
Merci d'avance pour votre aide

Reply

Marsh Posté le 11-04-2010 à 01:39:21   

Reply

Marsh Posté le 11-04-2010 à 08:55:45    

le oncontextmenu ne marche pas sur les images
 
si il marche dans ce cas au lieu de faire un document.oncontextmenu, tu fais un monimage.oncontextmenu = function....


---------------
Blablaté par Harko
Reply

Marsh Posté le 11-04-2010 à 11:04:56    

Le oncontextmenu marche effectivement... Et je met dans la balise image du code html  le on context menu= falsh. Cela me désactivera bien le clic droit juste sur les images... Mais pas de message alert ;)

Reply

Marsh Posté le 11-04-2010 à 11:16:04    

Salut,
 
ça sert à quoi ton script? Tu sais qu'avec Firefox tu peux désactiver le JavaScript? Ou lui demander de te montrer les images présentes sur la page dans une liste (à côté de laquelle il y a un bouton "Sauvegarder" ) ?
Non, si tu veux protéger tes images, c'est pas la bonne manière de s'y prendre.. désolé


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 11-04-2010 à 11:34:13    

Effectivement je sais que pour protéger une image ce n'est pas la bonne idée... Je fais cela pour un projet de développement web pour l'école... Un simple Screenshots permettrait de prendre les images aussi facilement de la même manière.  
Pour les intéressés voila le code pour des désactiver le clic sur UNE seul image mais seulement UNE image... J'ai réussi à activer un petit message d'alert en plus.
 

Citation :


 
 
 <img id="MJ1" src="medias\MJ1.jpeg" title="MJ1" alt="MJ1" onmousedown="alert('Interdit !!');" oncontextmenu="return false;"/>
 
 


 
Maintenant Puis je mettre ça sur TOUTE les images du site sans pour autant copier/ coller onmousedown="alert('Interdit !!');" oncontextmenu="return false;" dans chaque balise image ? :D


Message édité par darktrouble le 11-04-2010 à 11:34:30
Reply

Marsh Posté le 11-04-2010 à 11:41:49    

Utilise un langage dynamique (Donc pas PHP).  
Ou bien, tant qu'à faire, fait le avec en Javascript , comme ça t'es sûr que le 1er gugus qui viendra sur ton site, pourra tout pomper :o
 
franchement faudra m'expliquer pourquoi te donner tant de mal pour faire quelque chose d'inutile :heink:


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 11-04-2010 à 12:19:28    

Je fais ça, car c'est un exercice demandé par le "prof"... Et non pour mon simple plaisir... J'essaye justement de le faire en javascript, mais je n'y arrive pas... Tu ne pourrais pas m'aiguiller?

Reply

Marsh Posté le 11-04-2010 à 12:54:22    

Oui, regarde comment écrire des balises HTML avec JS.
Vous avez le droit d'utiliser des lib JS (prototype & co ) ?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 11-04-2010 à 15:05:43    

euh en fait, il nous a bien expliqué que tout ce qu'on faisait maintenant ne serais plus obligatoire ensuite, car les librairies javascript simplifient tout le travail...  
 
 
Je pense qu'il préfèrerai des programmes type:
 
 
 
 

Citation :


 
function afficherMessage(message)
{
 
alert('voici le message: '+message);
 
}


 
D'ailleur je n'ai jamais utilisé une seul librairie Javascript... Mas si tu as une solution comme ca, je suis preneur aussi

Reply

Marsh Posté le 11-04-2010 à 15:18:37    

Bah c'est toi qui voit hein :o
Si tu as la possibilité d'utiliser un framework JS (http://www.prototypejs.org/ par exemple), fait le, ça va pas mal te simplifier la vie.
 
Maintenant, ce que tu veux faire n'est pas bien compliqué, donc même sans sortir l'artillerie lourde, tu vas t'en sortir..
 
Regarde sur le net comment on fait pour lancer une fonction lors du chargement d'une page, ensuite regarde comment on utilise la fonction "write" de Javascript, ensuite tu pourras faire une fonction qui, lorsque qu'elle est chargée, ajoute ton bout de code à chaque balise img.
 
Par contre, on est bien d'accord, tu n'as pas accès à des langages dynamiques (PHP, Ruby, Python,...) sur ton serveur? Ni accès aux XSLT?


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 11-04-2010 à 15:18:37   

Reply

Marsh Posté le 11-04-2010 à 15:37:15    

1/ Pour lancer une fonction au chargement de la page, pas de soucie:
 

Citation :


Nom_De_La_Fonction();


 
dans la code javascript ( sur un fichier par exemple: site.js)
Puis dans le header de  la page html je l'apelle, ( par exemple: <script type="text/javascript" src="javascript/site.js"></script> )
 
 
 
2/ Fonction write ? ne la comprend pas.
 
 
3/ Code du programme ? Alert('No clic droit') et oncontextmenu="false"; G juste ca à mettre dans le corp du programme?

Reply

Marsh Posté le 11-04-2010 à 16:05:48    

Écoute, cherche un peu par toi même. Regarde cette bon dieu de documentation ( cadeau : http://www.w3schools.com/JS/js_howto.asp )
 
Une fois que t'as quelque chose à faire voir, reviens et on en discute ensemble.


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 01-11-2012 à 13:07:32    

Voila ce que j'utilise :
 

Code :
  1. HTML
  2. <div id="ct_img"></div>
  3. JAVASCRIPT
  4. $('#ct_img').append('<div class="copyright fil" style="background:url(img/image1.jpg) no-repeat;width:553px;height:367px;"></div>');
  5. $('#ct_img').append('<div class="copyright fil" style="background:url(img/image2.jpg) no-repeat;width:553px;height:368px;"></div>');
  6. $('#ct_img').append('<div class="copyright fil" style="background:url(img/image3.jpg) no-repeat;width:246px;height:370px;"></div>');
  7. $('.copyright').bind('contextmenu', function(e) {
  8.   e.preventDefault();
  9.   alert('Buy it motherfucker !');
  10. });


 
Je précise que j'ai utilisé jQuery mais on pourrait tout aussi bien le faire en javascript natif avec les events listeners
Avantages de cette méthode :
- Les images ne sont pas enregistrable avec un clique doit
- Pas sauvegarde avec une Ctrl + S du navigateur (car elle ne sont pas "en dur", ni même dans le DOM elle sont incrusté en image de fond d'une <div> et non avec une balise <img /> )
- Non présente dans le code source (car injectées en javascript dans le DOM après chargement du HTML).
- La méthode "je désactiver le javascript et recharge la page" pour pouvoir neutraliser le script ne pourra pas marcher ici car les images sont injectées en js, donc si on desactive le js, les images n'apparaissent plus ;)
 
Désavantages :
- Plus de réf pour les images (car pas dans le code source).
- Les images peuvent prendr un peu + de temps à etre chargée, car il faut attendre que le js s'execute.
- Il reste toujours la solution du screen-shot (mais cela prend beaucoup + de temps et peux occasionner une perte de qualité)
- On peut également toujours utiliser un outil comme firebug et aller chercher dans le DOM construit avec le javascript, mais cela prend beaucoup + de temps et demande un min de connaissance info
- Il faut préciser les dimension de chaque photo coté serveur (en php par ex).
 
A vous de voir, vous n'etes pas obligé de tout utiliser (désactiver le clique droit sera suffisant dans la majorité des cas car peu de gens savent aller plus loin. Si n se borne uniquement à ca cela permettra de conserver le référencement).
 
Code pour uniquement désactiver le clique droit :
 

Code :
  1. HTML
  2. <img class="copyright" src="img/image1.jpg" alt="" />
  3. JAVASCRIPT
  4. $('.copyright').bind('contextmenu', function(e) {
  5.   e.preventDefault();
  6.   alert('Buy it motherfucker !');
  7. });


---------------
Si ca sonne bien c que c bien
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed