Автор Тема: GreaseMonkey скрипт - премахнане на javascript код  (Прочетена 4997 пъти)

nov_chovek

  • Напреднали
  • *****
  • Публикации: 536
  • Distribution: Ubuntu 8.10 по принуда
  • Window Manager: Gnome
    • Профил
    • WWW
Здравейте. Чудех се дали някой не може да помогне с написването на малък GreaseMonkey скрипт, който да маха следния код от JavaScript-а на страницата. Кодът, който трябва да се махне е:

Код
GeSHi (Javascript):
  1. else if (navigator.appName == 'Netscape')
  2. {
  3. //alert (e.which);
  4. if (e.which == 93 || e.which == 0 || e.which == 3 || ((e.which == 37 || e.which == 39) && e.altKey) || (e.which == 82 && e.ctrlKey )) {
  5. alert("Клавиатурата не е активна"); //can be removed return false; //code for netscape to be added here
  6. return false;
  7. }

Благодаря предварително.
« Последна редакция: Dec 21, 2008, 14:13 от zeridon »
Активен

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Дай повече инфо - коя е тази страница или поне целия скрипт.
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

nov_chovek

  • Напреднали
  • *****
  • Публикации: 536
  • Distribution: Ubuntu 8.10 по принуда
  • Window Manager: Gnome
    • Профил
    • WWW
VladSun, сайта е на ПИБ

скрипта им е тук:

https://e-fibank.bg/fibcorporate/jsdir/bul/common.js

Проблема е че са сложили тоя ивент за проверка на натиснат winkey. Пробелма е че аз си сменям кирилица/латиница с този клавиш (за какво друго да го позлвам под линукс? :)  Така не мога да пиша в банкирането в кирилица.

Та ми се ще да накарам тая проверка на winkey да не се зарежда. Мерси.
Активен

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Просто си правиш своя функция:
Код
GeSHi (Javascript):
  1. document.onkeydown = function (e)
  2. {
  3.    // тялото на disablekeyboardnavigation() с каквито искаш изменения ;)
  4. }


GreaseMonkey
Код
GeSHi (Javascript):
  1. // ==UserScript==
  2. // @name          PIB sux
  3. // @author        VladSun
  4. // @description   Fake it
  5. // @include       https://e-fibank.bg/fibcorporate/*
  6. // ==/UserScript==
  7.  
  8. if (!GM_xmlhttpRequest)
  9. {
  10.    alert('Greasemonkey not installed (or too old).');
  11.    return;
  12. }
  13.  
  14. document.onkeydown = function (e)
  15. {
  16.    // тялото на disablekeyboardnavigation() с каквито искаш изменения ;)
  17. }

winkey-ът, който са прихванали е всъщност този за контекстното меню с код 93
« Последна редакция: Dec 21, 2008, 15:15 от VladSun »
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

nov_chovek

  • Напреднали
  • *****
  • Публикации: 536
  • Distribution: Ubuntu 8.10 по принуда
  • Window Manager: Gnome
    • Профил
    • WWW
нещо не мога да разбера, да декларирам ли пак функцията disablekeyboardnavigation() или в document.onkeydown = function (e) да сложа само тялото. Пробвах и двете, но се изпълнява пак оригиналния скрипт от сайта.

Това, което направих е да копирам disablekeyboardnavigation() блока от оригиналния скрипт и махнах блока за Navigator... не стана нищо, мханах само if-a за key 93 пак не стана...


Не съм много по програмирането.. :)
Активен

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Няма да я декларираш. Просто сменяш event handler-a на document.onkeydown и слагаш модифицираното тяло на disablekeyboardnavigation() в него.
Махни и коментара за alert()-а за да видиш дали изобщо се изпълнява новата функция:
Код
GeSHi (Javascript):
  1. else if (navigator.appName == 'Netscape')
  2. {
  3. alert (e.which);
  4. if (e.which == 0 || e.which == 3 || ((e.which == 37 || e.which == 39) && e.altKey) || (e.which == 82 && e.ctrlKey )) {
  5. alert("Клавиатурата Е активна"); //can be removed return false; //code for netscape to be added here
  6. return true;
  7. }
Също така промени и GM script-a за да си сигурен, че се изпълнява.
Код
GeSHi (Javascript):
  1. // ==UserScript==
  2. // @name          PIB sux
  3. // @author        VladSun
  4. // @description   Fake it
  5. // @include       https://e-fibank.bg/fibcorporate/*
  6. // ==/UserScript==
  7.  
  8. if (!GM_xmlhttpRequest)
  9. {
  10.    alert('Greasemonkey not installed (or too old).');
  11.    return;
  12. }
  13.  
  14. alert('GM script executed.');
  15.  
  16. document.onkeydown = function (e)
  17. {
  18.    // тялото на disablekeyboardnavigation() с каквито искаш изменения ;)
  19. }
« Последна редакция: Dec 21, 2008, 16:12 от VladSun »
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

nov_chovek

  • Напреднали
  • *****
  • Публикации: 536
  • Distribution: Ubuntu 8.10 по принуда
  • Window Manager: Gnome
    • Профил
    • WWW
махнах коментара на алърта за alert ("key down"); ама тоя алърт не излиза.

В error console на firefox илиза следното съобщение:

Цитат
Error: Component is not available
Source File: file:///home/milen/.mozilla/firefox/79q0vnxd.default/gm_scripts/pib_sux/pib_sux.user.js
Line: 17

на 17 ред почва функцията
Код:
document.onkeydown = function (e)
      {

или по-точно отварящата скоба.
Активен

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Аха ... пробвай:
Код
GeSHi (Javascript):
  1. // ==UserScript==
  2. // @name          PIB sux
  3. // @author        VladSun
  4. // @description   Fake it
  5. // @include       https://e-fibank.bg/fibcorporate/*
  6. // ==/UserScript==
  7.  
  8. if (!GM_xmlhttpRequest)
  9. {
  10.    alert('Greasemonkey not installed (or too old).');
  11.    return;
  12. }
  13.  
  14. document.removeEventListener('onkeydown', disablekeyboardnavigation, true);
  15. document.addEventListener('onkeydown', function (e)
  16. {
  17.    // тялото на disablekeyboardnavigation() с каквито искаш изменения
  18. }, true);


Макар, че изобщо не съм сигурен, че removeEventListener ще махне нещо присовено чрез doument.onkeydown ...
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

nov_chovek

  • Напреднали
  • *****
  • Публикации: 536
  • Distribution: Ubuntu 8.10 по принуда
  • Window Manager: Gnome
    • Профил
    • WWW
сега плюе:

Цитат
Error: disablekeyboardnavigation is not defined
Source File: file:///home/milen/.mozilla/firefox/79q0vnxd.default/gm_scripts/pib_sux/pib_sux.user.js
Line: 18
Активен

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Пробвай без реда

document.removeEventListener('onkeydown', disablekeyboardnavigation, true);

и да се надяваме, че
document.addEventListener

ще "изчисти" ...
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

nov_chovek

  • Напреднали
  • *****
  • Публикации: 536
  • Distribution: Ubuntu 8.10 по принуда
  • Window Manager: Gnome
    • Профил
    • WWW
Re: GreaseMonkey скрипт - премахнане на javascript код
« Отговор #10 -: Dec 21, 2008, 17:09 »
Нищо не става... айде карай, няма смисъл да се мъчим повече. Писах "бъг" репорт на ПИБ, дано го оправят. Дотогава, ще пействам кирилицата.

Мерси за усилията.
Активен

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: GreaseMonkey скрипт - премахнане на javascript код
« Отговор #11 -: Dec 21, 2008, 17:12 »
GreaseMonkey се грижи да не се затрият event handler-ите от други скриптове (предполагам, че са имали предвид други GM скриптове) и поради това използват addEventListener, а не се overwrite-ва директно... което в нашия случай е доста кофти, защото точно това искаме да направим :)

Би могъл да пробваш да изпълниш:
 
javascript:document.onkeydown=null; void(0);

в адресното поле на браузера, след като си им заредил странцата :)
« Последна редакция: Dec 22, 2008, 03:28 от VladSun »
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: GreaseMonkey скрипт - премахнане на javascript код
« Отговор #12 -: Dec 21, 2008, 17:17 »
Или:
Код
GeSHi (Javascript):
  1. javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300;y4=200; x5=300; y5=200; DI=document.images;DIL=DI.length; function A(){for(i=0;i<DIL; i++){DIS=DI[ i ].style;DIS.position='absolute';DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5;DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0)

поне ще ти стане весело ;)


ПП: Изпълнението на последното в този форум е доста весело :)
« Последна редакция: Dec 22, 2008, 03:28 от VladSun »
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P

nov_chovek

  • Напреднали
  • *****
  • Публикации: 536
  • Distribution: Ubuntu 8.10 по принуда
  • Window Manager: Gnome
    • Профил
    • WWW
Re: GreaseMonkey скрипт - премахнане на javascript код
« Отговор #13 -: Dec 21, 2008, 17:20 »
Ами нищо не става и с това дето предложи :)

Иначе за веселото: променя фокуса и го слага в/у реда дето си написал - това ли трябва да е целта? :)
Активен

VladSun

  • Moderator
  • Напреднали
  • *****
  • Публикации: 2166
    • Профил
Re: GreaseMonkey скрипт - премахнане на javascript код
« Отговор #14 -: Dec 21, 2008, 17:22 »
Мнеее :)
Зареждаш сайт с картинки (прим. този форум), копираш цялото това:

javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300;y4=200; x5=300; y5=200; DI=document.images;DIL=DI.length; function A(){for(i=0;i<DIL; i++){DIS=DI[ i ].style;DIS.position='absolute';DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5;DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0)

слагаш го в адресното поле и Enter :)
Активен

KISS Principle ( Keep-It-Short-and-Simple )
http://openfmi.net/projects/flattc/
Има 10 вида хора на този свят - разбиращи двоичния код и тези, които не го разбират :P