🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.javascript
Article #51444

Przywracanie prawego kliknięcia - raz działa a raz nie

#51444
From: __Maciek
Date: Tue, 19 Aug 2014 15:36
70 lines
3181 bytes
Hej, jest tu kto? :-)

Niedawno wgryzłem się trochę w podstawy JS i DOMu i zacząłem pisać
swoje skrypty dla GreaseMonkey. Nie mogę sobie jednak poradzić z jedną
rzeczą - strona ustawia sobie blokadę prawego kliknięcia, ćwiczę np.
na tej galerii:

http://www.st43.pl/4galery/details.php?image_id=10813

W źródle strony widzimy:

---------------------------------------------------------------

function right(e) {
    if ((document.layers || (document.getElementById &&
!document.all)) && (e.which == 2 || e.which == 3)) {
      alert("Š Copyright by Wielkopolska Galeria Kolejowa");
      return false;
    }
    else if (event.button == 2 || event.button == 3) {
      alert("Š Copyright by Wielkopolska Galeria Kolejowa");
      return false;
    }
    return true;
  }

  if (document.layers){
    document.captureEvents(Event.MOUSEDOWN);
    document.onmousedown = right;
  }
  else if (document.all && !document.getElementById){
    document.onmousedown = right;
  }

document.oncontextmenu = new Function("alert('Š Copyright by
Wielkopolska Galeria Kolejowa');return false");

---------------------------------------------------------------

Użycie bookmarkletu:

javascript:void(document.oncontextmenu=null);

przywraca normalne działanie prawego kliknięcia, jednak gdy w skrypcie
dla GM wpiszę:

document.oncontextmenu=null;

to nic to nie daje. Skrypt poza tym działa, bo robi jeszcze inne
rzeczy. Wpisanie powyższego w konsoli Firebuga daje zamierzony efekt
(context menu zaczyna działać).

Cały moj skrypt tutaj:
http://maciek100.boo.pl/inne/st43pl_-_ulatwienie_scia.user.js
(przerabia tutuł zdjęcia na link do pliku)

Jak to prawidłowo zrobić i dlaczego z GM nie działa?
Nie chodzi tu o "złamanie" tej konkretnej strony, tylko o poznanie
mechanizmu.


I jeszcze jedno przy okazji - Firebug, w podglądzie kodu strony podaje
coś takiego jak XPath. Dla ćwiczebnej galerii i elementu
(z)manipulowanego przez mój skrypt jest to:

/html/body/table/tbody/tr[2]/td/table[2]/tbody/tr/td/table/tbody/tr/td/table[2]/tbody/tr/td[3]/div/b/a

Czy jest jakiś sposób aby mając ten XPath, w prosty sposób dotrzeć do
elementu? Mocno by to ułatwiło pisanie userscriptów, gdy manipulowane
elementy nie mają atrybutów typu class czy id.
Technical Details
Message-ID: <7lq6v91o1ml3otu38pa06o3oov4pfqrut5@4ax.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!wsisiz.edu.pl!.POSTED!not-for-mail

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!wsisiz.edu.pl!.POSTED!not-for-mail
From: __Maciek <i80c586@cyberspace.org>
Newsgroups: pl.comp.lang.javascript
Subject: Przywracanie prawego kliknięcia - raz
 działa a raz nie
Date: Tue, 19 Aug 2014 17:36:45 +0200
Organization: http://www.wit.edu.pl
Lines: 71
Message-ID: <7lq6v91o1ml3otu38pa06o3oov4pfqrut5@4ax.com>
NNTP-Posting-Host: s188.iem.pw.edu.pl
Mime-Version: 1.0
X-Trace: portraits.wsisiz.edu.pl 1408462602 23370 194.29.147.188 (19 Aug 2014 15:36:42 GMT)
X-Complaints-To: abuse@wsisiz.edu.pl
NNTP-Posting-Date: Tue, 19 Aug 2014 15:36:42 +0000 (UTC)
X-Newsreader: Forte Agent 1.93/32.576 English (American)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit