2015-08-31 4 views
0

У меня есть код, отлично работающий в IE 9, но когда я перехожу через Chrome, я получаю сообщение об ошибке Элемент не имеет метода «attachEvent» '. Я пробовал использовать. Как и addEventListener(), тем не менее я не могу пройти. Элемент, используемый здесь, - это поле выбора людей SharePoint. Я имею в виду jquery 2.1.attachEvent не работает в браузере Chrome для события фокуса

Прошу совета, если мне ничего не хватает?

Код:

var element = getPeoplePickerRelControl("User", "div[Title='People Picker']"); 

    if (element != null) { 
     $(element).focusin(function() { 
      _cardHolderInfo = getUserDetails(element.innerHTML); 
     }); 
     // if(element.attachEvent) 
     element.attachEvent("onfocusout", manipulateLeaderProfile); 
+1

Можете ли вы добавить HTML-код также – Tushar

+0

Или вы ищете 'addEventListener ('blur')' – Tushar

+0

Я не уверен, как часть html влияет на него. можете ли вы указать, что вы ищете в innerhtml. Его слишком большой размер для копирования –

ответ

1

attachEvent специфичен только для IE. Если вы хотите закрепить любое событие в Chrome, вы должны использовать метод addEventListener. Прикрепите события, как показано ниже

if(navigator.userAgent.toLowerCase().indexOf('msie') != -1){ 
    element.attachEvent("focusout", manipulateLeaderProfile); 
} 
else{ 
    element.addEventListener("focusout", manipulateLeaderProfile, false); 
} 

Надеюсь, это вам поможет.

+0

Или просто браузеры с 'attachEvent' умирают и поддерживают только' addEventListener'. Это тоже работает :) –

+0

@ user2920481 удалить «on» из «onfocusout» или заменить его «размытием», чтобы этот фрагмент работал правильно. Предполагается, что имена событий не будут включены в 'addEventListener'. –

+0

Да, мы должны удалить из имени события. Я просто объяснял использовать метод addeventListener. Спасибо, что указали. Обновлен код. –