Article View: pl.comp.lang.javascript
Article #51444Przywracanie prawego kliknięcia - raz działa a raz nie
From: __Maciek
Date: Tue, 19 Aug 2014 15:36
Date: Tue, 19 Aug 2014 15:36
70 lines
3181 bytes
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-mailShow 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