:селектор кнопок не работает в firefox и т.п.

Пожалуйста, помогите мне: селектор кнопок, чтобы отвязать события от всех кнопок в моем проекте Spring MVC, отлично работает в Chrome, но не в Firefox и Internet Explorer.

Моя задача отвязать событие от всех кнопок в проекте. Код выглядит следующим образом:

var j$ = jQuery.noConflict();
	 
j$(document).ready(function() {
      jQuery(window).bind(
		    "beforeunload",
		    function() {
		      return confirm("do you want to exit?" , "true");
		    }
		);
		
		 jQuery(":button").on('click', function(){
            jQuery(window).unbind('beforeunload')
         });
		 
		jQuery('a').on('click', function(){
        jQuery(window).unbind('beforeunload')
    }); 
	
	 
jQuery(window).bind('keydown keyup', function(e) {
    if(e.which === 116) {
       jQuery(window).unbind('beforeunload');
    }
    if(e.which === 82 && e.ctrlKey) {
       jQuery(window).unbind('beforeunload');
    }
});


jQuery(window).mousedown(function(e){ 
    if( e.button == 2 ) { 
      jQuery(window).unbind('beforeunload');
    } 
     else{
     jQuery(window).bind('beforeunload');
     }
  }); 

  
jQuery("form").submit(function(){
   jQuery(window).unbind('beforeunload')
    });	
 
 
 });

Теперь это отлично работает в хроме, но не в ie и firefox. Пожалуйста, помогите мне исправить этот код или предложите мне другой способ отвязать событие от всех кнопок. Спасибо заранее

Привет, я только что получил актуальную проблему. Проблема связана с типом элемента ввода, который является кнопкой, что создает проблему. Если мы установим тип ввода кнопки «отправить», он отлично работает в Firefox и других. Но если тип ввода кнопки установлен на «кнопку», то она не работает. Я имею в виду это. Пожалуйста, помогите мне. Как это исправить. Заранее спасибо.


person Software Company    schedule 01.02.2016    source источник
comment
Не могли бы вы также загрузить свой html-код?   -  person Aleksandr Khomenko    schedule 01.02.2016
comment
Вы можете найти и загрузить код по адресу: bit.ly/1VBEzjD, а протестировать его можно по адресу: goo.gl/CcYlAh В chrome выполняется код jQuery(:button).on('click', function( ){ jQuery(окно).unbind('beforeunload') }); и он не дает оповещения о нажатии кнопки. Но в firefox он выдает предупреждение, а затем выполняет приведенный выше код, чтобы отменить привязку события beforeunload.   -  person Software Company    schedule 01.02.2016
comment
Я только что получил актуальную проблему. Проблема связана с типом входного элемента, т.е. кнопка , которая создает проблему. Если мы установим тип ввода кнопки для отправки, она отлично работает в Firefox и других. Но если тип ввода кнопки установлен на кнопку, то она не работает. Я имею в виду это ‹тип ввода=класс кнопки=имя кнопки=но /› для ‹тип ввода=класс отправки=имя кнопки=но /› . Пожалуйста, помогите мне. Как это исправить. Заранее спасибо.   -  person Software Company    schedule 01.02.2016


Ответы (2)


о, теперь я понимаю, что вы имеете в виду. Проблема заключалась в том, что вам была назначена функция disableButton для кнопки (внутри HTML)... и ЗАТЕМ с помощью Java Script (после того, как документ был готов) назначена другая функция [ jQuery(":button").on('click', ...)... unbind() ]

Проблема заключается в порядке вызова: сначала disableButton, а затем unbind(). И желаемое поведение достижимо только при обратном порядке.

Мое предложение состояло в том, чтобы либо использовать submit (как вы сказали ранее, почти без js), либо добавить j$(this).unbind("beforeunload"); в disableButton() (работает в firefox и т.п. тоже :-)):

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=windows-1252">
        <script type="text/javascript" src="demo-Dateien/jquery.js"></script>
        <script type="text/javascript">
            function disableButton() {
                j$(this).unbind("beforeunload");
                document.form.method="GET";
                document.form.but.disabled = true;
                document.form.submit();
            }

            var j$ = jQuery.noConflict();

            j$(document).ready(function() {
                  j$(window).bind(
                        "beforeunload",
                        function() {
                          return confirm("do you want to exit?" , "true");
                        }
                    );
             });
        </script>
    </head>
    <body>
        <form name="form" action="process.jsp" method="post">
            <label>First Name</label>
            <input name="fname" type="text">
            <br>
            <label>Last Name</label>
            <input name="lname" type="text">
            <br>
            <input class="Button" name="but" value="Next" onclick="javascript:disableButton()" type="button">
        </form>
    </body>
</html>
person Aleksandr Khomenko    schedule 01.02.2016
comment
Большое спасибо, сэр, за вашу помощь, но в нашем проекте каждая вторая страница jsp имеет подобную кнопку и прикрепленную к ней функцию disableButton(). Итак, судя по вашему ответу, мне придется изменить каждую страницу jsp проекта. Это достаточно сложная задача. Возможен ли другой выход? И сэр, еще один вопрос, он отлично работает в хроме, тогда почему он не работает нормально в ie и firefox? - person Software Company; 02.02.2016
comment
Здравствуйте, на практике реализации браузеров отличаются от стандартов и друг от друга... В в некоторых случаях два браузера могут реализовывать функцию, но с разным поведением. Так что, возможно, хром не интерпретирует js.submit() как уход с сайта. Если вы используете одну и ту же функцию на нескольких страницах, вы можете передать ее отдельному .js-файлу, а не просто включать (как вы делали с jquery). Запахи скопированного кода :-) - person Aleksandr Khomenko; 03.02.2016

в фаерфоксе работает............

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <title></title>
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

     <script>
    $(document).ready(function(){
      $("button").click(function(){
        alert("Hello");
      });
    });
    </script>

      </head>
      <body>
       <button> hello</button>
      </body>
    </html>
person Sarjerao Ghadage    schedule 01.02.2016