Когда ОС просит ваше приложение показать страницу, оно должно показать страницу. Он не может сказать «подождите минуту или две, пока я разговариваю с этим удаленным сервером через ненадежное сетевое соединение». Он должен показать страницу прямо сейчас.
Итак, я рекомендую открыть заставку - например, логотип вашей компании или приложения. Когда появится заставка, позвоните по номеру InitializeAppAsync
и, в зависимости от результата, переключитесь на страницу входа в систему или стартовую страницу или на страницу с удобной офлайн-ошибкой.
К форме, которой принадлежит элемент формы, можно получить доступ через element.form
.
Когда элемент, который Вы используете в качестве ссылки, не является элементом формы, необходимо было бы все еще выполнить итерации через parentElement
или используйте некоторый другой вид селектора.
Используя прототип, Вы могли упростить это при помощи Element.up ():
$(element).up('form');
Другое ответы к этому вопросу указали, как сделать то же в jQuery.
Угадайте, что необходимо выполнить итерации через все элементы затем. Можно попытаться использовать jQuery:
$("input").parent("form")
Вы могли отследить в обратном порядке в дереве DOM, пока Вы не добираетесь до правильного узла:
node = document.getElementById("message");
while (node.nodeName != "FORM" && node.parentNode) {
node = node.parentNode;
}
Или маленький jQuery (игнорирующий сам jQuery):
$("#message").parents("form:first")
Кроме node.parentNode, я не полагаю, что существует способ найти определенного предка данного узла. Большинство библиотек обычно делает то, что Вы описываете и выполняете итерации через parentNode.
Если бы Вы не пользуетесь библиотекой как прототип, jQuery или Расширение, это, вероятно, была бы хорошая идея. К настоящему времени они разрешили все несовместимости и причуды в DOM для создания большинства операций как это пустяком.
Относительно сообщения Гамбо: Несмотря на то, что прототип и jQuery полезны, некоторые люди не внедряют их в свои проекты.
Не мог бы кто-нибудь объяснить, почему решение Гамбо было понижено, кроме того факта, что он повторил то, что ОП изначально пытался избежать?
node = document.getElementById(this.id);
while (node.nodeName != "FORM" && node.parentNode) {
node = node.parentNode;
}
Чтобы ответить на вопрос ОП: Обход DOM - самый быстрый способ добиться этого эффекта - воспринимаемая скорость достигается за счет 1) лучше написанного JS-кода или 2) времени выполнения (если вы сохраняете форму при загрузке страницы для этого элемента, вы все равно будете перемещаться, но вы у вас будет более быстрый вызов сохраненной переменной, когда вам нужно будет получить эту информацию).
Нет атрибутов, вложенных в элементы, не являющиеся элементами формы, которые могли бы связать его с формой (span.form не существует).
Если вы используете скрипт (php / perl) для создания своей страницы и собираетесь делать много обращений к форме, вы можете встроить идентификатор формы в HTML для этого элемента. Тем не менее, поиск должен произойти.
Надеюсь, это поможет,
vol7ron