Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Ошибка в Firefox используя функцию hover - jQuery (https://javascript.ru/forum/misc/74124-oshibka-v-firefox-ispolzuya-funkciyu-hover-jquery.html)

root-andrey 15.06.2018 09:55

Ошибка в Firefox используя функцию hover - jQuery
 
Здравствуйте!

Использую функцию hover библиотеки jQuery для обработки событий mouseover и mouseout, получаю Ошибку Error: Permission denied to access property "parentNode" только в Firefox.

Чем это может быть вызвано?

<script type="text/javascript">
jQuery( "#br li.x_br" ).hover(
  function() {
    alert( this );
  }, function() {
    alert( this );
  }
);
	
</script>

<div>
			<ul id="br">
              <li class="x_br"><a href="#">Меню 1</a></li>
			  <li class="x_br"><a href="#">Меню 2</a></li>
			  <li class="x_br"><a href="#">Меню 3</a></li>
			  <li class="x_br"><a href="#">Меню 4</a></li>
			  <li class="x_br"><a href="#">Меню 5</a></li>
			  <li class="x_br"><a href="#">Меню 6</a></li>
              <li class="x_br"><a href="#">Меню 7</a></li>
              <li class="x_br"><a href="#">Меню 8</a></li>
            </ul>
		</div>

рони 15.06.2018 10:03

root-andrey,
именно этот код сбоит?

root-andrey 15.06.2018 10:08

да.(выпадающее меню у меня с задержкой) - в качестве примера, заметил что и этого достаточно,
когда использую this или eventObject аргумент функции eventObject.currentTarget

Если на один элемент то нормально обрабатывается.(например div)

а это мой код для обработки выпадающего меню с задержкой
var menuTop = (function(){
		var currentMenuItem;	
		var timerMenuOpen;
		var status = false;
		
		function toogleShowMenu_(){
					
			if(currentMenuItem){
				elemSubMenu = currentMenuItem.find(".wrapperSubMenu");	
				
				if(status){
					statusSubMenu = "none";
					currentMenuItem.removeClass("active");
					currentMenuItem = null;
					status = false;
				}else{
					currentMenuItem.addClass("active");	
					statusSubMenu = "block";
					status = true;				
				}

				if(elemSubMenu.length){		
					elemSubMenu.css("display", statusSubMenu);
				}
			}
		}			
		
		function setTimerMenuShow_(eventObject){
			currentMenuItem = jQuery(eventObject.currentTarget);		
			timerStatus = true;
			timerMenuOpen = setTimeout(function() {
				menuTop.toogleShowMenu();				
			}, 200);
		}
		function clearTimerMenuShow_(){
			if(!status){
				clearTimeout(timerMenuOpen);
				currentMenuItem = null;	
			}			
		}
		
		return {
			setTimerMenuShow: setTimerMenuShow_,
			clearTimerMenuShow: clearTimerMenuShow_,
			toogleShowMenu: toogleShowMenu_
		};
	}());

	$("#header_menu li.menuItem").hover(
		function(eventObject){
			menuTop.setTimerMenuShow(eventObject);
		},
		function(){	
			menuTop.clearTimerMenuShow();		
			menuTop.toogleShowMenu();
		}
	);
	jQuery("#header_menu .closeMenu").on("click", function(event){menuTop.toogleShowMenu();});

<div id="header_menu">
	<ul>
	<li class="menuItem"><a href="#">Меню 1</a>
		<div class="wrapperSubMenu">
			<div class="outerWrapper">
			<ul>	
				<li class="menuItem"><a href="#">Меню 2</a></li>
				<li class="menuItem"><a href="#">Меню 3</a></li>
				<li class="menuItem"><a href="#">Меню 4</a></li>
			</ul>
		</div>
	</li>
	<li class="menuItem"><a href="#">Меню 2</a></li>
	<li class="menuItem"><a href="#">Меню 3</a></li>

	</ul>
</div>

</script>

рони 15.06.2018 10:18

root-andrey,
не вижу проблемы, код у вас скорее всего иной, и если проблемы только с Firefox, значит где-то не поставили event.

root-andrey 15.06.2018 10:51

Цитата:

Сообщение от рони (Сообщение 487422)
root-andrey,
не вижу проблемы, код у вас скорее всего иной, и если проблемы только с Firefox, значит где-то не поставили event.


Ниже приведенный код вызывает ошибку
jQuery( "#header li.menuItem" ).hover(
	  function(event) {
		alert( event.currentTarget );
	  }, function(event) {
		alert( event.currentTarget );
	  }
	);

<div id="header">
	<ul>
	<li class="menuItem"><a href="#">Меню 1</a>
		<div class="wrapperSubMenu">
			<div class="outerWrapper">
			<ul>	
				<li><a href="#">Меню 2</a></li>
				<li><a href="#">Меню 3</a></li>
				<li><a href="#">Меню 4</a></li>
			</ul>
                        </div>
		</div>
	</li>
	<li class="menuItem"><a href="#">Меню 2</a></li>
	<li class="menuItem"><a href="#">Меню 3</a></li>
	</ul>
<div>

рони 15.06.2018 11:11

root-andrey,
версия jQuery?

root-andrey 15.06.2018 11:20

Цитата:

Сообщение от рони (Сообщение 487431)
root-andrey,
версия jQuery?

jQuery v1.12.4

рони 15.06.2018 11:23

root-andrey,
не могу воспроизвести вашу ошибку.

root-andrey 15.06.2018 11:33

Цитата:

Сообщение от рони (Сообщение 487438)
root-andrey,
не могу воспроизвести вашу ошибку.

Прошу прощения.

Ошибка получается не в этом коде.
Так как запустил отдельно на чистой страничке и ошибки тоже не увидел.

Я запускаю код там где на странице есть еще js обработки и вот она ошибка. Что то где портит блин :)

root-andrey 15.06.2018 13:37

над меню находиться абсолютно позиционированный элемент бегущая строка marquee, она и вызывает данную ошибку


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