Onclick JavaScript не работает должным образом в IE - PullRequest
1 голос
/ 16 декабря 2009

Прошу прощения за мое невежество. Я не очень хорошо знаком с Javascript, и мне было поручено устранить ошибку разработчика, которого больше нет в компании.

Онклик отлично работает в FireFox, однако в IE 7 и 8 (единственные, для которых мы тестируем), он, кажется, правильно проходит через функции онклика, а затем вместо данных, передаваемых на URL формы в goStep3 (), он запускает каждый клик на странице с помощью 'href = "#" ", а затем, наконец, отправляет неверную информацию, поскольку переменная была перезаписана 50 раз.

<a href="#" onclick="trackSponsor(62, 64265); goStep3(1896, 64265, 0); return false;">view</a>

EDIT: Когда я запускаю trackSponsor(62, 64265); goStep3(1896, 64265, 0); return false; в Инструментах разработчика в IE8, я получаю сообщение об ошибке, возвращая false вне функции .... удаляя, что он работает просто отлично.

Является ли линия, которой я верю, вызывает проблемы

trackSponsor () работает правильно и возвращает false

goStep3 () - довольно большая функция, однако она работает, извлекая значения из 4 других функций внутри, присваивая значения URL-адресу в пределах theAction

Завершает функцию РЕДАКТИРОВАТЬ:

var yr = $("#find-yr").attr('value');
var me = $("#find-me").attr('value');
var mo = $("#find-mo").attr('value');
var keywords = $("#find-keywords").attr('value');
var theAction = PATH_BASE+'find/step3/'+p_term+'/'+p_id+'/'+p_l_id+'/';

document.forms['FindForm'].action = theAction;
document.FindForm.submit(); 
return true;

Я попытался вернуть false из этой функции, а также изменить document.FindForm.submit() на «правильный» синтаксис document.forms['FindForm'].submit(), и он по-прежнему не отправляется до тех пор, пока не будет пройден все другие «onclick» на странице. ,

Заранее спасибо!

Примечания:

Также используется jQuery.

Javascript не выдает никаких ошибок.

Это отлично работает в FireFox

Я вижу, как он выполняет все другие функции в других 'onclick, использующих Инструменты разработчика, и, переходя по странице, он не передает результаты goStep3, пока не пройдут все другие функции' onclick 'на стр.

Ответы [ 5 ]

1 голос
/ 17 декабря 2009

"опубликовать мой предыдущий комментарий как ответ"

Я вижу, как много Jquery используется с селекторами атрибутов, поэтому, пожалуйста, проверьте код по этим ..

EDIT:

я заметил, что вы не знакомы с Javascript ... так что в случае, если вы не знали, селектор jQuery выберет все теги, соответствующие определенному "фильтру-селектору", и выполнит с ними определенное действие ... так что если селектор, который выбирает все теги A с атрибутом href (или, возможно, другим общим атрибутом между ними ..), тогда это будет причиной вашей проблемы.

РЕДАКТИРОВАТЬ: -после того, как вы опубликовали свой ответ -

рад, что вы нашли ответ ..

хотя это немного странно, потому что в соответствии с вашим вопросом он проходит через "каждый элемент с href =" # " ..

Однако, согласно msdn , всплывающее окно событий просто передает эти необработанные события родительскому элементу для обработки. не через "похожие" теги:)

да ладно .. нет ничего логичного, когда дело доходит до IE

0 голосов
/ 17 декабря 2009

Проблема была вызвана из-за того, как IE использует пузырь! Спасибо всем за помощь, я включил решение для кода в goStep3 ().

    var browserName = navigator.appName;
if (browserName == "Microsoft Internet Explorer") {
    window.event.cancelBubble = true;       
}
0 голосов
/ 16 декабря 2009

попробуйте изменить

 href="#" 

с

 href='javascript:void(0)' .
0 голосов
/ 16 декабря 2009

Я не могу точно сказать, где что-то идет не так, но я не рекомендую использовать атрибут name формы для ссылки на него, как вы сделали здесь:

document.forms['FindForm'].action = theAction;
document.FindForm.submit(); 

Почему бы не попробовать следующий jQuery:

$("form:FindForm").action = theAction;
$("form:FindForm").trigger("submit");

Вам также следует убедиться, что $("form:FindForm") действительно ссылается на нужный элемент формы.

0 голосов
/ 16 декабря 2009

Я бы начал с удаления "return false;" из события onClick, поскольку оно действительно ничего не делает.

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