Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: nov_chovek в Dec 21, 2008, 14:02



Титла: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: nov_chovek в Dec 21, 2008, 14:02
Здравейте. Чудех се дали някой не може да помогне с написването на малък 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. }

Благодаря предварително.


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: VladSun в Dec 21, 2008, 14:31
Дай повече инфо - коя е тази страница или поне целия скрипт.


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: nov_chovek в Dec 21, 2008, 14:39
VladSun, сайта е на ПИБ

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

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

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

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


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: VladSun в Dec 21, 2008, 15:05
Просто си правиш своя функция:
Код
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


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: nov_chovek в Dec 21, 2008, 15:59
нещо не мога да разбера, да декларирам ли пак функцията disablekeyboardnavigation() или в document.onkeydown = function (e) да сложа само тялото. Пробвах и двете, но се изпълнява пак оригиналния скрипт от сайта.

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


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


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: VladSun в Dec 21, 2008, 16:05
Няма да я декларираш. Просто сменяш 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. }


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: nov_chovek в Dec 21, 2008, 16:34
махнах коментара на алърта за 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)
      {

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


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: VladSun в Dec 21, 2008, 16:55
Аха ... пробвай:
Код
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 ...


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: nov_chovek в Dec 21, 2008, 17:02
сега плюе:

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


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: VladSun в Dec 21, 2008, 17:05
Пробвай без реда

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

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

ще "изчисти" ...


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: nov_chovek в Dec 21, 2008, 17:09
Нищо не става... айде карай, няма смисъл да се мъчим повече. Писах "бъг" репорт на ПИБ, дано го оправят. Дотогава, ще пействам кирилицата.

Мерси за усилията.


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: VladSun в Dec 21, 2008, 17:12
GreaseMonkey се грижи да не се затрият event handler-ите от други скриптове (предполагам, че са имали предвид други GM скриптове) и поради това използват addEventListener, а не се overwrite-ва директно... което в нашия случай е доста кофти, защото точно това искаме да направим :)

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

в адресното поле на браузера, след като си им заредил странцата :)


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: VladSun в 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)

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


ПП: Изпълнението на последното в този форум е доста весело :)


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: nov_chovek в Dec 21, 2008, 17:20
Ами нищо не става и с това дето предложи :)

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


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: VladSun в 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 :)


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: nov_chovek в Dec 21, 2008, 17:27
Днес дори не мога да направя и това :) Нищо не става човек :) Смъква ми фокуса на страница най-долу и това е :) с Firefox 3 съм



EDIT: ааа с други сайтове става :)
измества картинките :)

Ама с тоя форум не става :)


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: VladSun в Dec 21, 2008, 17:30
мдам, чупи се
аз съм с Опера


Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: smashsmashin в Dec 30, 2008, 00:59
Аз успях да махна проверката в Firefox със следния скрипт за GreaseMonkey
Код
GeSHi (Javascript):
  1. // ==UserScript==
  2. // @name           PIB keyboard fix
  3. // @author         smashsmashin
  4. // @include        https://e-fibank.bg/fibcorporate/*
  5. // ==/UserScript==
  6.  
  7. if (!GM_xmlhttpRequest)
  8. {
  9.   alert('Greasemonkey not installed (or too old).');
  10.   return;
  11. }
  12.  
  13. unsafeWindow.document.keydown=null;
  14. unsafeWindow.document.onkeydown=null;
  15.  

P.S. Благодарности на VladSun за поставеното начало.



Титла: Re: GreaseMonkey скрипт - премахнане на javascript код
Публикувано от: VladSun в Dec 30, 2008, 09:56
И аз благодаря за unsafeWindow :)