Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Активация скрипта после нажатии на клавишу (https://javascript.ru/forum/css-html/56092-aktivaciya-skripta-posle-nazhatii-na-klavishu.html)

iopakit 29.05.2015 12:05

Активация скрипта после нажатии на клавишу
 
Здравствуйте.
Создал скрипт для изминения названия спойлеров в одном сайте.
Вот собственно и код:
var all_toggle_elements=document.getElementsByClassName("toggle");
for(var i=0;i<all_toggle_elements.length;i++){
if(all_toggle_elements[i].tagName.toLowerCase()!="div") continue;
element1 = all_toggle_elements[i].getElementsByClassName("date")[0];
element2 = all_toggle_elements[i].getElementsByClassName("formRow last")[0].getElementsByClassName("oneFour")[0].getElementsByTagName("span")[0];
element3 = all_toggle_elements[i].getElementsByClassName("formRow last")[0].getElementsByClassName("oneFour")[1].getElementsByTagName("span")[0];
element4 = all_toggle_elements[i].getElementsByClassName("formRow last")[1].getElementsByClassName("oneFour")[1].getElementsByTagName("span")[0];
element5 = all_toggle_elements[i].getElementsByClassName("formRow last")[1].getElementsByClassName("oneFour")[2].getElementsByTagName("span")[0];
element6 = all_toggle_elements[i].getElementsByClassName("formRow")[0].getElementsByClassName("oneFour")[0].getElementsByTagName("span")[0];
element7 = all_toggle_elements[i].getElementsByClassName("title closed")[0].getElementsByTagName("h6")[0];
element8 = all_toggle_elements[i].getElementsByClassName("formRow last")[2].getElementsByClassName("oneFour")[2].getElementsByTagName("span")[0];

element1.innerHTML=element8.innerHTML+" "+element2.innerHTML+" дней "+element3.innerHTML+" ("+element4.innerHTML+")-("+element5.innerHTML+") "+element6.innerHTML;
element7.innerHTML="Информация";
}

Мне нужно чтобы этот скрипт активировался не сам, так как как только сайт загружаеться то скрипт работает
А нужно например сидеть на сайте, нажать "Alt+F" и только чтобы тогда скрипт работал. Скажем так чтобы его "активировать".

KosBeg 29.05.2015 12:31

ищем ответ тут - https://learn.javascript.ru/keyboard-events

iopakit 29.05.2015 15:05

Незнаю в чём дело(
Так оаботает:
function runOnKeys(func) {
        var codes = [].slice.call(arguments, 1);

        var pressed = {};

        document.onkeydown = function(e) {
          e = e || window.event;

          pressed[e.keyCode] = true;

          for (var j = 0; j < codes.length; j++) { // проверить, все ли клавиши нажаты
            if (!pressed[codes[j]]) {
              return;
            }
          }

          // во время показа alert, если посетитель отпустит клавиши - не возникнет keyup
          // при этом JavaScript "пропустит" факт отпускания клавиш, а pressed[keyCode] останется true
          // чтобы избежать "залипания" клавиши -- обнуляем статус всех клавиш, пусть нажимает всё заново
          pressed = {};

          func();

        };

        document.onkeyup = function(e) {
          e = e || window.event;

          delete pressed[e.keyCode];
        };

      }

      runOnKeys(
        function() {
          alert("Привет!")
        },
        "Q".charCodeAt(0)
      );

Но как вместо алерта свой код ставлю то неработает(
Мой код:
function runOnKeys(func) {
        var codes = [].slice.call(arguments, 1);

        var pressed = {};

        document.onkeydown = function(e) {
          e = e || window.event;

          pressed[e.keyCode] = true;

          for (var j = 0; j < codes.length; j++) { // проверить, все ли клавиши нажаты
            if (!pressed[codes[j]]) {
              return;
            }
          }

          // во время показа alert, если посетитель отпустит клавиши - не возникнет keyup
          // при этом JavaScript "пропустит" факт отпускания клавиш, а pressed[keyCode] останется true
          // чтобы избежать "залипания" клавиши -- обнуляем статус всех клавиш, пусть нажимает всё заново
          pressed = {};

          func();

        };

        document.onkeyup = function(e) {
          e = e || window.event;

          delete pressed[e.keyCode];
        };

      }

      runOnKeys(
        var all_toggle_elements=document.getElementsByClassName("toggle");
for(var i=0;i<all_toggle_elements.length;i++){
if(all_toggle_elements[i].tagName.toLowerCase()!="div") continue;
element1 = all_toggle_elements[i].getElementsByClassName("date")[0];
element2 = all_toggle_elements[i].getElementsByClassName("formRow last")[0].getElementsByClassName("oneFour")[0].getElementsByTagName("span")[0];
element3 = all_toggle_elements[i].getElementsByClassName("formRow last")[0].getElementsByClassName("oneFour")[1].getElementsByTagName("span")[0];
element4 = all_toggle_elements[i].getElementsByClassName("formRow last")[1].getElementsByClassName("oneFour")[1].getElementsByTagName("span")[0];
element5 = all_toggle_elements[i].getElementsByClassName("formRow last")[1].getElementsByClassName("oneFour")[2].getElementsByTagName("span")[0];
element6 = all_toggle_elements[i].getElementsByClassName("formRow")[0].getElementsByClassName("oneFour")[0].getElementsByTagName("span")[0];
element7 = all_toggle_elements[i].getElementsByClassName("title closed")[0].getElementsByTagName("h6")[0];
element8 = all_toggle_elements[i].getElementsByClassName("formRow last")[2].getElementsByClassName("oneFour")[2].getElementsByTagName("span")[0];

element1.innerHTML=element8.innerHTML+" "+element2.innerHTML+" дней "+element3.innerHTML+" ("+element4.innerHTML+")-("+element5.innerHTML+") "+element6.innerHTML;
element7.innerHTML="Информация";
},
        "Q".charCodeAt(0)
      );

KosBeg 29.05.2015 16:14

я не знаю работает ли, но ошибок в консоли нету,
спрятал код потому что длинный)))
function runOnKeys(func) {
  var codes = [].slice.call(arguments, 1);
  var pressed = {};
    document.onkeydown = function(e) {

	  e = e || window.event;

	  pressed[e.keyCode] = true;

	  for (var j = 0; j < codes.length; j++) {
        if (!pressed[codes[j]]) {
          return;
        }
      }
      
	  pressed = {};

      func();

    };
    
	document.onkeyup = function(e) {
	  e = e || window.event;
	  delete pressed[e.keyCode];
	};

}

runOnKeys(
function() {
  var all_toggle_elements=document.getElementsByClassName("toggle");
  for(var i=0;i<all_toggle_elements.length;i++){
    if(all_toggle_elements[i].tagName.toLowerCase()!="div") continue;
      element1 = all_toggle_elements[i].getElementsByClassName("date")[0];
      element2 = all_toggle_elements[i].getElementsByClassName("formRow last")[0].getElementsByClassName("oneFour")[0].getElementsByTagName("span")[0];
      element3 = all_toggle_elements[i].getElementsByClassName("formRow last")[0].getElementsByClassName("oneFour")[1].getElementsByTagName("span")[0];
      element4 = all_toggle_elements[i].getElementsByClassName("formRow last")[1].getElementsByClassName("oneFour")[1].getElementsByTagName("span")[0];
      element5 = all_toggle_elements[i].getElementsByClassName("formRow last")[1].getElementsByClassName("oneFour")[2].getElementsByTagName("span")[0];
      element6 = all_toggle_elements[i].getElementsByClassName("formRow")[0].getElementsByClassName("oneFour")[0].getElementsByTagName("span")[0];
      element7 = all_toggle_elements[i].getElementsByClassName("title closed")[0].getElementsByTagName("h6")[0];
      element8 = all_toggle_elements[i].getElementsByClassName("formRow last")[2].getElementsByClassName("oneFour")[2].getElementsByTagName("span")[0];

      element1.innerHTML=element8.innerHTML+" "+element2.innerHTML+" дней "+element3.innerHTML+" ("+element4.innerHTML+")-("+element5.innerHTML+") "+element6.innerHTML;
      element7.innerHTML="Информация";
  }
},

"Q".charCodeAt(0)
);

iopakit 29.05.2015 19:06

Нероботает(
Может там что-то не так?

KosBeg 29.05.2015 19:18

Цитата:

Сообщение от iopakit
Нероботает(
Может там что-то не так?

покажите пожалуйста html разметку

iopakit 29.05.2015 19:36

Вложений: 1
Цитата:

Сообщение от KosBeg (Сообщение 373137)
покажите пожалуйста html разметку

Вот разметка одного из спойлера (я меняю параметр "date")
<div class="toggle">
<div class="title closed">
<img class="titleIcon" src="/images/icons/dark/pencil.png" alt="">
<h6>Информация о займе</h6>
<div class="garant_state">
<img src="/images/garant_stat1.png" alt="">
</div>
<div class="date">#23514012 29/05/2015г.</div>
<a class="detailed-link" href="javascript" data-ofert_borrower="https://webtransfer-finance.com/ru/account/ofert-23514012.pdf" data-borrower_another="https://webtransfer-finance.com/ru/account/application_doc/0/5">
<img class="pdf_image" src="/images/note.png" title="Datailed docs" style="margin-top: 6px;margin-left: 10px;">
</a>
<div class="buttons">
<span>Выставлена</span>
<a class="delete_button" href="https://webtransfer-finance.com/ru/account/delete_invest/23514012" onclick="return yes_no_debit()">
<span>Удалить</span>
</a>
</div>
</div>
<div class="body">
<fieldset style="width:100%" class="blank_info">
<div class="formRow">
<label>Сумма </label>
<div class="formRight">
<span class="oneFour out-summa" style="width:130px;font-size:15px;text-align:center;">$ 50.00<br><span style="font-size:11px">(Заемные)</span> </span>
<span class="oneFour" style="width:130px;font-size:15px;"></span>
<span class="oneFour" style="width:auto;"></span>
</div> 
</div>
<div class="formRow last">
<label>Детали Займа</label>
<div class="formRight biger">
<span class="oneFour" style="width:130px;">
<span>21</span><br>Кол-во Дней </span>
<span class="oneFour" style="width:135px;"><span>1.6%</span><br>Процент в сутки</span>
<span class="oneFour" style="margin-right:0px;width:130px;">
<span>$ 66.80</span>
<br>Сумма возврата</span>
</div>
</div>
<div class="formRow last">
<label>Гарант (вкл) </label>
<div class="formRight biger">
<span class="oneFour" style="width:130px;"><span>$ 16.80</span><br>
</span>
<span class="oneFour" style="width:135px;">
<span>$ 6.72 (-40%)</span><br> отчисление </span>
<span class="oneFour" style="margin-right:0px;width:130px;">
<span>
$ 60.08 </span>
<br>вы получите </span>
</div>
</div>
<div class="drop_down">
<div class="list_applications">
</div>
</div>
</fieldset>
</div>
</div>

Сорри что без спойлера, незнаю как поставить.
Дело в том что сам код работает(без активации на клавишу "Q")
Кидаю два файла, мой код и мой код с клавишей "Q"

KosBeg 29.05.2015 20:52

Задание решено в личной переписке)))


Часовой пояс GMT +3, время: 14:45.