Eventlistener не всегда вызывал jQuery UI иконки - PullRequest
0 голосов
/ 23 мая 2018

как шрифт пользовательского интерфейса Я загружаю это

<head>
    <meta charset="utf-8" />
    <script src="/javascripts/jquery-ui-1.12.1.custom/external/jquery/jquery.js"></script>
    <script src="/javascripts/jquery-ui-1.12.1.custom/jquery-ui.js"></script>
    <link href="/javascripts/jquery-ui-iconfont-master/jquery-ui.icon-font.css" rel="stylesheet" type="text/css" />
</head>

на странице, которая используется для игрока

<div id="iconStop" class="ui-icon ui-icon-stop">icon</div>
<div id="iconRecord" class="ui-icon ui-icon-radio-on">icon</div>
<div id="iconPause" class="ui-icon ui-icon-pause">icon</div>

, чем

function sendCommand(name){
      sendJson('mode:'+name);
 }
 window.onload = function () {
       document.getElementById("iconStop").addEventListener("click",function(){ sendCommand('stop'); } );
       document.getElementById("iconRecord").addEventListener("click",function(){ sendCommand('record'); } );
       document.getElementById("iconPause").addEventListener("click",function(){ sendCommand('pause'); } );
   }

странная вещьявляется то, что щелчок работает только иногда.Ручной вызов sendCommand ('any') работает постоянно!Есть идеи, почему это не всегда работает?

Ответы [ 2 ]

0 голосов
/ 25 мая 2018

на самом деле исправить это было просто, изменив событие на mousedown, как это

window.onload = function () {
    document.getElementById("iconStop").addEventListener("mousedown",function(){ sendCommand('stop'); } );
    document.getElementById("iconRecord").addEventListener("mousedown",function(){ sendCommand('record'); } );
    document.getElementById("iconPause").addEventListener("mousedown",function(){ sendCommand('pause'); } );
}

по крайней мере для Firefox и Chrome, это работает намного лучше

0 голосов
/ 23 мая 2018

Может быть, есть проблема с загрузкой jquery и использованием чистого javascript для обработки событий.В вашем случае я рекомендую что-то вроде этого:

function sendCommand(name){
    sendJson('mode:'+name);
}
$(document).ready(function(){

    $('#iconStop').on('click', function() { sendCommand('stop'); } );
    OR
    $('#iconStop').click(function() { sendCommand('stop'); } );
})

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...