Вопрос по javascript – Событие щелчка срабатывает в IE / Firefox, но Chrome отбрасывает назначение события

6

Я нахожусь в процессе отладки своего веб-приложения и попал в стену. Я испытываю поведение только в Google Chrome, и моя неумелость JavaScript не позволяет мне найти решение.

У меня есть страница ASP с<asp:Panel> контроль. На панели я настроил простое текстовое поле поиска и использую<asp:LinkButton> начать поиск. Пользователь вводит свой текст поиска и должен иметь возможность нажать Enter (дляудобство использования) и результаты поиска будут отображаться. Это работает в IE, но не в FireFox. Eстьзадокументированное исправление который я применил к своей странице и успешно установил FireFox. Golden.

За исключением того, что исправление не работает в Google Chrome! Немного подозрительно, я запускаю Firebug для отладки кода ... о, подождите ... это проблема только Chrome. Хорошо, я могу справиться с отладкой JavaScript без Firebug (sob) - Я запускаю отладчик Chrome и перебираю код. Оказывается, что исправление javascript, упомянутое ранее, удаляется Chrome.

Сценарий исправления запускается при загрузке страницы и изменяет обработчик нажатийLinkButton:

var defaultButton = document.getElementById('<%= lnkSearch.ClientID %>');
if (defaultButton && typeof(defaultButton.click) == 'undefined') {   
    defaultButton.click = function() {
        alert('function fired');
        var result = true;
        if (defaultButton.click) result = defaultButton.onclick();
        if (typeof(result) == 'undefined' || result) {
            eval(defaultButton.getAttribute('href'));
        }
    };
    alert(typeof(defaultButton.click) != 'undefined');
}

И при запуске страницы в отладчике Chrome я вхожу вfunction WebForm_FireDefaultButton() и добраться до линии:

if (defaultButton && typeof(defaultButton.click) != "undefined") { ... }

и по какой-то причинеdefaultButton.click стал"undefined", Я в тупике ... Чего мне не хватает?

Also, I'm not using jQuery and it isn't a viable solution.


HTML-код:

<div id="abc_pnlSearchPanel" language="javascript" onkeypress="javascript:return WebForm_FireDefaultButton(event, 'abc_lnkSearch')"> 
    <div class="searchPanel"> 
        <span class="searchText"> 
            Type in stuff to search:
        </span> 
        <span style="float: left;">
            <input name="abc:txtSearch" type="text" id="abc_txtSearch" style="width:312px;" />
        </span> 
        <a onclick="this.blur();" id="abc_lnkSearch" class="ButtonLayout" href="javascript:__doPostBack('abc$lnkSearch','')"><span>Search</span></a> 
        <div style="clear: both"></div> 
    </div> 
</div> 
У меня похожая проблема, когда в Chrome я могу получить доступ к HTMLAnchorElement (тегу & lt; a & gt;), но у него нет функции click (), хотя и должен. Howard M. Lewis Ship
Я не большой специалист по ASP, можете ли вы опубликовать HTML-код того, что производит панель? Paolo Bergantino

Ваш Ответ

1   ответ
3

почему это происходит в Chrome и других браузерах. Но регистрация скрипта для выполнения на PageLoad решила проблему.

<body onLoad="DefaultButtonFix()">

Похожие вопросы