Щелчок по тегу в IE6 и FF с помощью jQuery
-
18-09-2019 - |
Вопрос
У меня есть div
который возвращается из ajax-вызова , который содержит a
.Мне нужно щелкнуть по нему в javascript, однако я не могу найти способ, который работает как в IE6, так и в FF.
Это работает в FF, но генерирует требуемый объект ошибка в IE6:
$('#mylink').click();
Это работает в IE6, но генерирует $("#mylink").get(0).click - это не функция ошибка в FF.
$('#mylink').get(0).click();
Есть какие-нибудь идеи о том, почему это так и какое решение доступно?
Редактировать:
Использование триггера возвращает ту же ошибку, что и click в IE6:
$('#mylink').trigger('click');
Редактировать:
Помещение кода в таймер не изменяет поведение:
setTimeout(function() {
$('#mylink').click();
}, 100);
Редактировать:
В качестве обходного пути это работает.Но было бы неплохо лучше разобраться в проблеме.Это проблема не только jQuery (или, возможно, вообще).Ошибка JavaScript IE6 возникает из MicrosoftAjax.js так что это как-то связано с этим.
var anchor = $('#mylink');
if (anchor.get(0).click) {
anchor.get(0).click();
}
else {
anchor.click();
}
Решение
Если $ ("#mylink").click() не найден, но $ ("#mylink").get(0).click() есть, то не могли бы вы использовать это как основу для теста?
например
if ($("#mylink").click)
{
$("#mylink").click()
}
elseif ($("#mylink").get(0))
{
$("#mylink").get(0).click();
}
Я знаю, что далек от идеала, но таков порядок вещей при работе с IE6
Другие советы
Метод get возвращает элемент DOM.Вместо этого вы должны использовать эквалайзер.
$('#mylink').eq(0).click();
Как насчет использования триггер ?
$("#mylink").trigger('click');
Попробуй:
$('#mylink').trigger('click');
Следует однако будьте таким же, как ваш первый пример...Сделайте несколько оповещений в IE, чтобы убедиться, что элемент существует и все такое (может быть, у вас где-то есть дублированный идентификатор или что-то в этом роде?).
В требуемый объект вероятно, генерируется из-за того, что IE не может найти #mylink
выбор во времени.Убедитесь, что вы выполнили вызов в функции успешного обратного вызова или предоставили функцию тайм-аута, которая проверяет, доступен ли элемент перед запуском щелчка:
window.setTimeout(function() {
if ($("#mylink").length) {
$("#mylink").trigger('click');
return false;
}
window.setTimeout(arguments.callee, 1);
},1);