Guest User

Userscript для exhentai.org

a guest
Dec 2nd, 2016
402
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name        SadPandaScript
  3. // @namespace   Rozenfag
  4. // @include     https://exhentai.org/*
  5. // @match       https://exhentai.org/*
  6. // @version     6
  7. // @author      Aleksandr Petrov
  8. // @run-at      document-end
  9. // @grant       none
  10. // ==/UserScript==
  11.  
  12. /*
  13.     Здравствуй мой дорогой любитель фапа =3
  14.     Для тебя (ну и конечно же для себя любимого), я накатал небольшой скрипт расширяющий функционал любимой грустнопанды.
  15.     Для его запуска тебе понадобится современный браузер и расширение для выполнения UserScript-ов.
  16.     Для Firefox это будет "Greasemonkey", для Opera  нужно "Tampermonkey" или "Violent monkey", а для Chrome ищи "Trampermonkey".
  17.  
  18.     После установки нужного расширения, добавь в него этот скрипт и ты получишь следующие вкусности:
  19.     1) Возможность листать по пробелу. Очень удобно, особенно когда руки заняты, просто жмакнуть по большой конпке, а не целиться)))
  20.     2) Предзагрузка изображений, что позволяет избежать "морганий" при перелистывании контента. Незаменимая вещь на игровом арте, где зачастую фон не меняется, а меняются "эмоции" и появляются детали, вроде брызг спермы.
  21.     3) Слайдшоу режим, для полноценного освобождения рук)))))))))))))) Таймаут в секундах можете установить свой в переменной TIMEOUT_SEC_SLIDE_SHOW чуть ниже.
  22.     4) Автоматическое масштабирование изображения с помощью трех режимов: уменьшение до пределов окна, уменьшение или увеличение до пределов окна, и исходный размер.
  23.     5) Минимализм)) Только картинка и ты. Управление все через клавиши, т.к. как по мне это самое удобное. Кстати, очень круто в полноэкранном режиме браузера фапать))
  24.     6) Перевод на русский язык множества тегов, да еще и в виде крутой таблицы) Просто зайди на https://exhentai.org/ и нажми на "Показать список тегов" под поисковой формой. Очень удобно на лету выделить нужные фетиши, и сразу получить результат. А еще часть тегов автоматом переводится в галерее.
  25.  
  26.     [УПРАВЛЕНИЕ]
  27.     ПРОБЕЛ или СТРЕЛОЧКА ВПРАВО: Следующая картинка.
  28.     СТРЕРОЧКА ВЛЕВО: Предыдущая картинка.
  29.     СТРЕЛОЧКА ВВЕРХ: Вернуться в галерею.
  30.     СТРЕЛОЧКА ВНИЗ, F5: Обновить страницу, для получения настоящего URL, а не первого, т.н. "входного".
  31.     TAB: Запуск и остановка слайдшоу.
  32.     КЛИК ПО КАРТИНКЕ: Изменение режима масштабирования. Текущий можно посмотреть в значке вкладки.
  33. */
  34.  
  35. var TIMEOUT_SEC_SLIDE_SHOW = 9; //По умолчанию картинка сменяется раз в 9 секунд.
  36. var GAY = false; //Гендер по умолчанию для тегов на главной. Если вы гетеро, ниечго не меняйте, если вы гей, смените на true
  37.  
  38. var tag = {
  39.     'russian':          ['lg',  [0],    'Русский',           'Перевод на русский язык.'],
  40.     'english':          ['lg',  [0],    'Английский',     'Перевод на английский язык.'],
  41.     'translated':       ['lg',  [0],    'Перевод',           'Любой перевод с языка оригинала.'],
  42.     'age_progression':  ['fm',  [1],    'Увеличение возраста',    'Человек быстро становится старше.'],
  43.     'age_regression':       ['fm',  [1],    'Уменьшение возраста',    'Человек быстро становится моложе.'],
  44.     'dilf':         ['ma',  [1],    'Взрослый мужчина',  'Мужик в возрасте 30-50 лет.'],
  45.     'infantilism':      ['fm',  [1],    'Инфантилизм',       'Сексуальные действия, связанные с взрослым партнером, как если бы они были младенцем. Например, смена подгузника взрослому человеку..'],
  46.     'lolicon':          ['fe',  [1],    'Лоликон',           'Несовершеннолетние девушки с неразвитым телом в эротических ситуациях. Не следует путать с подростками или молодыми девушками.'],
  47.     'low_lolicon':      ['fe',  [1],    'Мягкий лоликон',      'Лоликон, не вписавшийся в правила ресурса.'],
  48.     'low_shotacon':     ['ma',  [1],    'Мягкий шотакон',      'Шотакон, не вписавшийся в правила ресурса.'],
  49.     'milf':         ['fe',  [1],    'Милфа',           'Женщина в возрасте 30-50 лет.'],
  50.     'old_lady':         ['fe',  [1],    'Старуха',           'Пожилая женщина за 50.'],
  51.     'old_man':          ['ma',  [1],    'Старик',         'Пожилой мужчина за 50.'],
  52.     'shotacon':         ['ma',  [1],    'Шотакон',           'Несовершеннолетние мальчики с неразвитым телом в эротических ситуациях. Не следует путать с подростками или молодыми парнями.'],
  53.     'toddlercon':       ['fm',  [1],    'Дети',         'Эротические сцены с детьми.'],
  54.     'amputee':          ['fm',  [2],    'Ампутации',       'У человека отсутствует одна или несколько конечностей. Может присутствовать гуро.'],
  55.     'body modification':    ['fm',  [2],    'Бодмод',         'Измененные части тела.'],
  56.     'conjoined':        ['fe',  [2],    'Сиамские близнецы',    'Две или более голов, из одного тела.'],
  57.     'doll_joints':      ['fm',  [2],    'Кукольные суставы',    'Шарнирные или похожие на них искуственные суставы.'],
  58.     'gijinka':          ['fm',  [2],    'Очеловечивание',     'Персонаж, не являющийся человеком, превращается или становится похож на него.'],
  59.     'inflation':        ['fm',  [2],    'Раздутие',         'Область живота неестественно выпуклая, словно надутый воздушный шарик. Часто, из-за заполнения газами/щупальцами/яйцами/жидкостями/существами и т.д.'],
  60.     'invisible':        ['fm',  [2],    'Невидимость',       'Совершение сексуальных действий, будучи невидимым.'],
  61.     'multiple_arms':        ['fm',  [2],    'Многорукость',     'Рук больше, чем две.'],
  62.     'multiple_breasts': ['fe',  [2],    'Многогрудость',       'Грудей больше, чем две.'],
  63.     'multiple_nipples': ['fm',  [2],    'Многососковость',   'Сосков больше чем обычно.'],
  64.     'multiple_penises': ['fm',  [2],    'Мультипенисы',     'Обладание более чем одним пенисом.'],
  65.     'multiple_vaginas': ['fm',  [2],    'Мультивагины',     'Обладание более чем одной вагиной.'],
  66.     'muscle':           ['fm',  [2],    'Мышцы',           'Мускулистое телосложение.'],
  67.     'muscle_growth':        ['fm',  [2],    'Мышечный рост',        'Мышцы увеличиваются в размерах или появляются там, где их небыло.'],
  68.     'pregnant':         ['fm',  [2],    'Беременность',     'Сексуальные действия с беременным человеком.'],
  69.     'stretching':       ['fm',  [2],    'Растяжение',     'Растяжение частей тела за пределами человеческих возможностей.'],
  70.     'tailjob':          ['fm',  [2],    'Хвост',           'Использование хвоста, чтобы стимулировать половые органы.'],
  71.     'wings':            ['fm',  [2],    'Крылья',         'На теле присутствуют крылья.'],
  72.     'absorption':       ['fm',  [3],    'Поглощение',     ''],
  73. };
  74. //  'aaaaaa':       ['fm',  [], 'bbbbbb',       ''],
  75.  
  76. var fetCat = [
  77.     'язык',     // 0
  78.     'возраст',       // 1
  79.     'тело',     // 2
  80.     'изменения'        // 3
  81. ];
  82.  
  83. var catTag = {
  84.     'fe': ['female', 'женское'],
  85.     'ma': ['male', 'мужское'],
  86.     'fm': [(GAY===false?'female':'male'), (GAY===false?'женское':'мужское')],
  87.     'lg': ['language', 'язык'],
  88.     'ms': ['misc', 'разное']
  89. };
  90.  
  91. window.addEventListener('load', function(){
  92.     var regexpMain    = /^https:\/\/exhentai\.org\/?[^\.\/]*$/;         //Главная
  93.     var regexpGallery = /^https:\/\/exhentai\.org\/g\/\d+\/[\d\w]+\/.*$/;   //Галерея
  94.     var regexpImage   = /^https:\/\/exhentai\.org\/s\/[\d\w]+\/[\d\-]+$/;   //Изображение
  95. //-----------------------------------------------------------------------------------------------------
  96.     if(regexpMain.test(document.location.toString())){ //         [Создание таблицы тегов на главной]
  97. //-----------------------------------------------------------------------------------------------------
  98.         var show = false; var fetID=[];
  99.         var space = document.createTextNode(' \u00A0\u00A0');
  100.         var tagDivCont = document.createElement('div');
  101.         var showHideTag = document.createElement('a');
  102.         var advdiv=document.getElementById('advdiv');
  103.  
  104.         Element.prototype.addCategory = function(text) {
  105.             var tr = document.createElement('tr');
  106.             var td1= document.createElement('td');
  107.             var td2 = document.createElement('td');
  108.             td1.className = 'tc';
  109.             td1.innerHTML = text;
  110.             tr.appendChild(td1);
  111.             tr.appendChild(td2);
  112.             this.appendChild(tr);
  113.             return td2;
  114.         };
  115.  
  116.         Element.prototype.addTag = function(tagname) {
  117.             var div = document.createElement('div');
  118.             var a = document.createElement('a');
  119.             var tagid = tag[tagname];
  120.             div.className = 'gt';
  121.             a.innerHTML = tagid[2];
  122.             a.title = tagid[3];
  123.             a.href = '#';
  124.             a.id = tagname;
  125.             div.appendChild(a);
  126.             this.appendChild(div);
  127.         };
  128.  
  129.         function changeTag(t){
  130.             var inpSearch = document.getElementsByName('f_search')[0];
  131.             var query = catTag[tag[t][0]][0]+':'+t;
  132.             var pos = inpSearch.value.indexOf(query);
  133.             if(pos<0){
  134.                 inpSearch.value += (inpSearch.value.length>0?' ':'') + query;
  135.                 return true;
  136.             }else{
  137.                 inpSearch.value = inpSearch.value.replace((pos===0?'':' ') + query + (pos===0?(inpSearch.value.length==query.length?'':' '):''), '');
  138.                 return false;
  139.             }
  140.         }
  141.  
  142.         showHideTag.innerHTML = 'Показать список тегов';
  143.         showHideTag.href = '#';
  144.         advdiv.previousSibling.appendChild(space);
  145.         advdiv.previousSibling.appendChild(showHideTag);
  146.         showHideTag.addEventListener ('click', function(){
  147.             if(show === true){
  148.                 showHideTag.innerHTML = 'Показать список тегов';
  149.                 tagDivCont.style.display='none';
  150.             }else{
  151.                 showHideTag.innerHTML = 'Скрыть список тегов';
  152.                 tagDivCont.style.display="";
  153.             }
  154.             show = !show;
  155.         }, false);
  156.  
  157.         var toppane=document.getElementById('toppane');
  158.         tagDivCont.className = 'idi';
  159.         tagDivCont.style.display='none';
  160.         toppane.appendChild(tagDivCont);
  161.  
  162.         var tagDiv = document.createElement('div');
  163.         var tagTable = document.createElement('table');
  164.         var tagTbody = document.createElement('tbody');
  165.         tagDiv.id = 'taglist';
  166.         tagDiv.style.height = 'auto';
  167.         tagDivCont.appendChild(tagDiv);
  168.         tagDiv.appendChild(tagTable);
  169.         tagTable.appendChild(tagTbody);
  170.  
  171.         for(var f=0; f<fetCat.length; f++){
  172.             fetID[f] = tagTbody.addCategory(fetCat[f]);
  173.         }
  174.         for (var key in tag) {
  175.             fetID[tag[key][1]].addTag(key);
  176.         }
  177.  
  178.         var inpSearch = document.getElementsByName('f_search')[0];
  179.         if(inpSearch.value.length>0){
  180.             var tags = inpSearch.value.split(' ');
  181.             tags.forEach(function(item) {
  182.                 var ptag = item.split(':');
  183.                 if ((ptag.length>0)&&(typeof tag[ptag[1]] !== 'undefined')) {
  184.                     var ttag = document.getElementById(ptag[1]);
  185.                     if(typeof ttag !== 'undefined') ttag.style.color = 'blue';
  186.                 }
  187.             });
  188.             showHideTag.click();
  189.         }
  190.  
  191.         tagTable.addEventListener ('click', function(e){
  192.             if(e.target.tagName == 'A') e.target.style.color = (changeTag(e.target.id) === true?'blue':'');
  193.         }, false);
  194. //-----------------------------------------------------------------------------------------------------
  195.     }else if(regexpGallery.test(document.location.toString())){ //            [Перевод тегов галерее]
  196. //-----------------------------------------------------------------------------------------------------
  197.         var taglist = document.getElementById('taglist').getElementsByTagName('tr');
  198.         if(taglist.length>0){
  199.             for(var i=0; i<taglist.length; i++){
  200.                 var trTag = taglist[i].firstChild.innerHTML.substring(0,taglist[i].firstChild.innerHTML.length-1);
  201.                 for (var j in catTag) {
  202.                     if(catTag[j][0] == trTag){
  203.                         var aList = taglist[i].lastChild.getElementsByTagName('a');
  204.                         for(var k=0; k<aList.length; k++){
  205.                             var atag = aList[k].id.toString().substr(4+trTag.length);
  206.                             if(typeof tag[atag] !== 'undefined'){
  207.                                 aList[k].innerHTML = tag[atag][2];
  208.                                 aList[k].title = tag[atag][3];
  209.                             }
  210.                         }
  211.                         taglist[i].firstChild.innerHTML = catTag[j][1];
  212.                         break;
  213.                     }
  214.                 }
  215.             }
  216.         }
  217. //--------------------------------------------------------------------------------------------------------
  218.     }else if(regexpImage.test(document.location.toString())){ // [Прокачка режима просмотра изображений]
  219. //--------------------------------------------------------------------------------------------------------
  220.         //Всякие переменные и картинки в base64 формате.
  221.         var gallURL = document.getElementById('i5').getElementsByTagName('a')[0].href;
  222.         var currURL, nextURL, prevURL;
  223.         var block = false, blockIMG = false;
  224.         var timer;
  225.         var timeoutURL, timeoutIMG;
  226.         var ScaleMode = 1;
  227.         var slideShow = false;
  228.         var loadIMG, showIMG;
  229.         var loadImgW, loadImgH, showImgW, showImgH;
  230.         var timeout_LoadIMG = 14000; //Таймаут в мс, на загрузку изображения.
  231.         var favicons = [
  232.             'data:image/gif;base64,R0lGODlhEAAQAMIGAGYGEYCAgJmZmbOzs8zMzOXl5f///////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQFCgAHACwAAAAAEAAQAAADNAi63HowSvmmhfXOrCPvx9eJGnk9jhMCYVEQxDAIQhCwqAvLtI3jutisdlutUgsjyINEJgAAIfkEBQoABwAsAwAKAAoAAwAAAw1IVKUzQijmoFyNvJgAACH5BAUKAAcALAMACgAKAAMAAAMLOENUxUoxB+N8RCUAIfkEBQoABwAsAwAKAAoAAwAAAw0oMkNUxSnmoFztRZIAACH5BAUKAAcALAMACgAKAAMAAAMNGCEyQ6QUxRyUtL1YEgAh+QQFCgAHACwDAAoACgADAAADDSgSoTOEKOagXE28mAAAIfkEBQoABwAsAwAKAAoAAwAAAws4IxLBSjEH43xCJQAh+QQBCgAHACwDAAoACgADAAADDUg0IxLBKeagXO1FkQAAOw==',
  233.             'data:image/gif;base64,R0lGODlhEAAQAIABAGYGEf///yH5BAEKAAEALAAAAAAQABAAAAIohI9pwe2+nmRxvmobzmFnb4FThFCHCQGoplKd23bt7L6yHd4cq/RGAQA7',
  234.             'data:image/gif;base64,R0lGODlhEAAQAIABAGYGEf///yH5BAEKAAEALAAAAAAQABAAAAIthI9pwe2+EDwhgtds3e96z1xZWIkjl5lYp65pR06cKn5be5f6qkmp5mIphoYCADs=',
  235.             'data:image/gif;base64,R0lGODlhEAAQAIABAGYGEf///yH5BAEKAAEALAAAAAAQABAAAAIghI9pwe2+nmRxvmobzmFnb4GTKJEXwEFoSq2sqSqyUQAAOw=='
  236.         ];
  237.         //Удаляем все ненужное со страницы
  238.         window.onpopstate = null;
  239.         window.onresize = null;
  240.         window.onload = null;
  241.         document.onkeydown = null;
  242.         document.body.innerHTML = "";
  243.         document.body.style.textAlign = 'center';
  244.         document.body.style.padding = '0px';
  245.  
  246.         //Создаем два пустых изображения. Первое сделаем скрытым от глаз, и будем в него грузить нужную картинку, а после загрузки, без всяких морганий,
  247.         //перекинем во второе, которое видимо. Кароче, в одном все грузится, во втором показывается.
  248.         loadIMG = document.createElement("img");
  249.         showIMG = document.createElement("img");
  250.         document.body.appendChild(loadIMG);
  251.         document.body.appendChild(showIMG);
  252.         loadIMG.style.width = '0px';
  253.         loadIMG.style.height = '0px';
  254.         showIMG.style.cursor = 'pointer';
  255.  
  256.         //Функция для показа анимации загрузки вместо стандартного значка грустнопанды во вкладке, чтоб было видно, что чет грузится.
  257.         function changeFavicon(mode){
  258.             var head = document.head || document.getElementsByTagName('head')[0];
  259.             var link = document.createElement('link');
  260.             link.id = 'dynamic-favicon';
  261.             link.rel = 'shortcut icon';
  262.             link.href = favicons[(mode<0?ScaleMode:mode)];
  263.             var oldLink = document.getElementById('dynamic-favicon');
  264.             if(oldLink) head.removeChild(oldLink);
  265.             head.appendChild(link);
  266.         }
  267.  
  268.         //Обрабатываем событие окончания загрузки нашей картинки в скрытом от глаз изображении.
  269.         loadIMG.addEventListener ('load', function(){
  270.             blockIMG = true;
  271.             clearTimeout(timeoutIMG); //Удаляем таймаут на загрузку пикчи, а то вылезет попап, что мы якобы еще её грузим.
  272.             showImgW = loadImgW;
  273.             showImgH = loadImgH;
  274.             ScaleImage();
  275.             showIMG.src = loadIMG.src;
  276.             changeFavicon(-1);
  277.             block = false;
  278.             blockIMG = false;
  279.             window.scrollTo(0,0);
  280.         }, false);
  281.  
  282.         //Функция для изменения размеров картинки в зависимости от режима маштабирования.
  283.         function ScaleImage(){
  284.             var ratio = Math.min((window.innerWidth-2) / showImgW, (window.innerHeight-2) / showImgH);
  285.             if( ((ScaleMode == 1) && (ratio >= 1)) || (ScaleMode == 3) ) ratio = 1;
  286.             showIMG.style.width = parseInt(showImgW*ratio)+'px';
  287.             showIMG.style.height = parseInt(showImgH*ratio)+'px';
  288.         }
  289.  
  290.         //Обрабатываем клик по изображению. Это меняет режим масштабирования.
  291.         showIMG.addEventListener ('click', function(){
  292.             ScaleMode = (ScaleMode==3?1:ScaleMode+1);
  293.             if(blockIMG === false) ScaleImage();
  294.             if(block === false) changeFavicon(ScaleMode);
  295.         }, false);
  296.  
  297.         //Эта функция грузит нужную страницу в галерее и получает все данные о изображении на ней.
  298.         function getImage(url){
  299.             if(block === false){ //Если заблочено, значит что-то грузится и делать ничо не будем)
  300.                 if(url === currURL){ //На случай окончания картинок в галерее. Просто выходим в ее корень, с превьюхами.
  301.                     slideShow=false;
  302.                     document.location = gallURL;
  303.                 }else{ //Все ОК можно грузить страницу.
  304.                     block = true; //Блочим функцию на период ее асинхронного выполнения.
  305.                     changeFavicon(0); //Анимируем значок во вкладке.
  306.                     var xmlhttp = new XMLHttpRequest();
  307.                     xmlhttp.open('GET', url, true); //Формируем запрос на грустнопанду.
  308.  
  309.                     //Обрабатываем событие прихода ответа.
  310.                     xmlhttp.onreadystatechange=function(){
  311.                         if(xmlhttp.readyState != 4) return;
  312.  
  313.                         clearTimeout(timeoutURL); //Ответ пришел, можно удалять таймаут на него.
  314.  
  315.                         if(xmlhttp.status == 200){ //Ответ пришел какой мы и ждали)
  316.                             //Тут мы долго и скучно вытаскиваем из пришедшего html кода адреса для навигации, размер картинки и т.д.
  317.                             var tempDOM = new DOMParser().parseFromString(xmlhttp.responseText, "text/xml");
  318.                             nextURL=tempDOM.getElementById("next").href;
  319.                             prevURL=tempDOM.getElementById("prev").href;
  320.                             currURL=url;
  321.  
  322.                             var imageSize = tempDOM.getElementById("i2").childNodes[1].innerHTML.split(' :: ')[1].split(' x ');
  323.                             loadImgW = imageSize[0];
  324.                             loadImgH = imageSize[1];
  325.  
  326.                             //Начинаем грузить картинку в скрытое изображение по полученному адресу из ответа.
  327.                             loadIMG.src = tempDOM.getElementById("img").src;
  328.  
  329.                             //Таймаут на загрузку картинки, т.к. грустнопанда не отличается идеальной стабильностью.
  330.                             timeoutIMG = setTimeout( function(){
  331.                                 alert('ОШИБКА: Загрузка изображения длилась более '+parseInt(timeout_LoadIMG/2000)+' сек. и была прервана.');
  332.                                 changeFavicon(-1);
  333.                                 block = false;
  334.                             }, 100+parseInt(timeout_LoadIMG/2));
  335.                         } else {//Все ужасно(((
  336.                             alert('ОШИБКА: При загрузке exhentai.org возникли неполадки. Подробнее: ' + xmlhttp.statusText);
  337.                         }
  338.                     };
  339.  
  340.                     xmlhttp.send(null); //Отправляем запрос на грутснопанду.
  341.  
  342.                     //Таймаут запроса, на случай подвисшего инета, глюков на грустнопанде и прочих сетевых неврозах.
  343.                     timeoutURL = setTimeout( function(){
  344.                         xmlhttp.abort();
  345.                         alert('ОШИБКА: Загрузка exhentai.org длилась более '+parseInt(timeout_LoadIMG/2000)+' сек. и была прервана.');
  346.                         changeFavicon(-1);
  347.                         block = false;
  348.                     }, 100+parseInt(timeout_LoadIMG/2));
  349.                 }
  350.             }
  351.         }
  352.         //Обрабатываем нажатие клавиш.
  353.         document.body.addEventListener ('keydown', function(event){
  354.             switch(event.keyCode){
  355.                 case 9://TAB
  356.                     slideShow = (slideShow===false?true:false);
  357.                     if(slideShow===true){
  358.                         alert('СЛАЙДШОУ: Запущена смена изображений раз в '+TIMEOUT_SEC_SLIDE_SHOW+' сек.');
  359.                         timer = setInterval(function(){
  360.                             if(slideShow===false){
  361.                                 clearInterval(timer);
  362.                             }else{
  363.                                 getImage(nextURL);
  364.                             }
  365.                         }, TIMEOUT_SEC_SLIDE_SHOW*1000);
  366.                     }else{
  367.                         alert('СЛАЙДШОУ: Остановлено.');
  368.                     }
  369.                     break;
  370.                 case 32://ПРОБЕЛ
  371.                 case 39://СТРЕЛОЧКА ВПРАВО
  372.                     getImage(nextURL); //Следущее изображение.
  373.                     break;
  374.                 case 37://СТРЕЛОЧКА ВЛЕВО
  375.                     getImage(prevURL); //Предыдущее изображение.
  376.                     break;
  377.                 case 38://СТРЕЛОЧКА ВВЕРХ
  378.                     document.location = gallURL; //Возвращение в галерею с превьюшками.
  379.                     break;
  380.                 case 40://СТРЕЛОЧКА ВНИЗ
  381.                 case 116://F5
  382.                     event.preventDefault();
  383.                     document.location = currURL; //Рефрешнуть страницу. Полезно для получения правильной ссылки на страницу в адресной строке.
  384.                     break;
  385.             }
  386.         }, false);
  387.         getImage(document.URL); //Загружаем картинку начальной страницы, ведь мы удалили все в теге <body> очистив от всего лишнего.
  388.     }
  389. }, false);
Add Comment
Please, Sign In to add comment