браузер iPhone Safari, измените # хеш-URL, а затем окно предупреждения Javascript перестанет работать
Я запускаю веб-страницу в iPhone Safari. На странице есть кнопка. при нажатии на нее появится окно с сообщением о предупреждении. Хорошо. Затем я изменяю или добавляю # хэш-URL , набирая в адресной строке, затем окно с предупреждением перестает работать. Я нажимаю на кнопку, и ничего не происходит. Нет ошибки JavaScript, но нет окна с предупреждением.
Это известная проблема iOS Safari?
Пожалуйста, поделитесь своими мыслями и решением, которое вы придумали. Большое спасибо!
$(".button").click(function () {
alert('Hello');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
<input class="button" type="button" value="alert" />
Ответы
Ответ 1
Никогда не использовал #
внутри URL, кроме как для ссылки на якорь, но я не уверен на 100% в этом... Я думаю, что добавление #
к URL и нажатие клавиши Enter не перезагрузит страницу. #abc
в URL- #abc
браузеру переходить на якорь с именем abc
поэтому он никогда не перезагрузит страницу и не вызовет какой-либо javascript. Если вы не хотите переходить/прокручивать к какой-либо привязке к вашей реальной странице, не используйте #
в URL. Это должно решить вашу проблему.
Ответ 2
# В URL-адресе является идентификатором фрагмента. Ожидается, что что-то будет после URL-примера: www.yourpage.com/foo.html#bar. Это оставляет его в поисках фрагмента бара на вашей странице. Страница не будет перезагружена.
Это может помочь фрагментам w3
Ответ 3
Ну, это может быть связано с тем, что вы не делаете еще один http request
и вместо этого указываете браузеру перейти к указанному хешу (пример) #abc.
Если бы у вас был элемент такого рода с этим идентификатором, он перешел бы в этот раздел страницы.
Пример:
<a href="#abc">click to jump down to my section</a>
<p id="abc">my section</p>
Я предполагаю, что когда вы введете #abc в URL, он будет искать это. Которого там нет, конечно.
Кроме этого, я не совсем уверен.
Ответ 4
Может быть связано с предупреждением, подтверждением и запросом, не работающим после использования History API в Safari, iOS и https://forums.developer.apple.com/thread/65054.
Кажется, что alert()
становится undefined
. Предлагаемый обходной путь - использовать вместо этого пользовательские всплывающие окна.