Я пытаюсь изменить плагин WordPress, который активирует сценарий игры при нажатии кнопки. Я хотел бы иметь возможность активировать его комбинацией нажатий клавиш (Shift + Control + F).

Я попытался обернуть весь скрипт функцией нажатия клавиш, но это не сработало. Я подтвердил, что сценарий загружается через журнал консоли, но нажатие комбинации клавиш ничего не делает.

Исходный код:

PHP


<?php

...

/* Insert the button*/
  switch ($asteroids_buttonopt) {
  case "push-1":
    echo  '<div><p style="text-align: center;">
           <a href="#" onclick="'.$asteroids_start.'"><button>Click to Play Asteroids!!!</button>
           </a></p></div>';
  break;

...

  }

?>

JS

  function getInternetExplorerVersion()
  // Returns the version of Internet Explorer or a -1
  // (indicating the use of another browser).
  {
    var rv = -1; // Return value assumes failure.
    if (navigator.appName == 'Microsoft Internet Explorer')
    {
      var ua = navigator.userAgent;
      var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
      if (re.exec(ua) != null)
        rv = parseFloat( RegExp.$1 );
    }
    return rv;
  }


  function startAsteroids(color,address) { 
    var ver = getInternetExplorerVersion();
    if(ver>=0){
      color = typeof(color) != 'undefined' ? color : 'black';
      document.onkeydown = function(ev) {   
      var key;
      ev = ev || event;
      key = ev.keyCode;
          if(key == 37 || key == 38 || key == 39 || key == 40) {
          //e.cancelBubble is supported by IE - this will kill the bubbling process.
          ev.cancelBubble = true;
          ev.returnValue = false;
          }      
      }
      var s =document.createElement('script');
      s.type='text/javascript'
      document.body.appendChild(s);
      s.src = address;
      void(0);
      return false; 
    }
    else{
      color = typeof(color) != 'undefined' ? color : 'black';
      var s =document.createElement('script');
      s.type='text/javascript'
      document.body.appendChild(s);
      s.src = address;
      void(0);
      return false; 
    }
  }

Любая помощь будет принята с благодарностью. Исходный плагин Asteroid Widget был заброшен 8 лет назад, поэтому я не могу обратиться за помощью к Разработчики.

1
Bakala 16 Апр 2020 в 03:51

1 ответ

Лучший ответ

Вместо того, чтобы обертывать все содержимое страницы, вы должны добавить следующую функцию onkeypress в конец файла JS.

Обязательная функция

    window.onkeypress=function(e){
    if(e.ctrlKey && e.shiftKey && e.code==='KeyF' ){
      startAsteroids('','/wp-content/plugins/asteroids-widget/gears/play-asteroids-yellow.min.js');
    }
  }

Завершить полученный файл

  function getInternetExplorerVersion()
  // Returns the version of Internet Explorer or a -1
  // (indicating the use of another browser).
  {
    var rv = -1; // Return value assumes failure.
    if (navigator.appName == 'Microsoft Internet Explorer')
    {
      var ua = navigator.userAgent;
      var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
      if (re.exec(ua) != null)
        rv = parseFloat( RegExp.$1 );
    }
    return rv;
  }


  function startAsteroids(color,address) { 
    var ver = getInternetExplorerVersion();
    if(ver>=0){
      color = typeof(color) != 'undefined' ? color : 'black';
      document.onkeydown = function(ev) {   
      var key;
      ev = ev || event;
      key = ev.keyCode;
          if(key == 37 || key == 38 || key == 39 || key == 40) {
          //e.cancelBubble is supported by IE - this will kill the bubbling process.
          ev.cancelBubble = true;
          ev.returnValue = false;
          }      
      }
      var s =document.createElement('script');
      s.type='text/javascript'
      document.body.appendChild(s);
      s.src = address;
      void(0);
      return false; 
    }
    else{
      color = typeof(color) != 'undefined' ? color : 'black';
      var s =document.createElement('script');
      s.type='text/javascript'
      document.body.appendChild(s);
      s.src = address;
      void(0);
      return false; 
    }
  }
    window.onkeypress=function(e){
    if(e.ctrlKey && e.shiftKey && e.code==='KeyF' ){
      startAsteroids('','/wp-content/plugins/asteroids-widget/gears/play-asteroids-yellow.min.js');
    }
  }
2
Crawlinson 16 Апр 2020 в 03:01