Я создаю сайт, используя C# и ASP. NET Core. На одной из веб-страниц есть кнопка, которая должна заполнить поле ввода вашим географическим местоположением с помощью javascript. У меня проблемы с получением Safari в iOS для запуска скрипта, когда я нажимаю кнопку. Кажется, он работает везде, где я его протестировал (P C Рабочий стол на Edge, Chrome, Firefox, iOS Устройство в Firefox и Chrome).
Вот функция, которая встроена в нижнюю часть страницы html, где кнопка:
<script>
var form = document.getElementById("locinput");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(prefillLocation);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function prefillLocation(position) {
form.value = position.coords.latitude + ', ' + position.coords.longitude;
}
</script>
Я пытался прикрепить эту функцию к кнопкам различными способами.
<input id="clickMe" type="button" value="Get GeoLoc" mousemove="getLocation();" onclick="getLocation();" />
<button value="iosbutton" type="button" mousedown="getLocation();" onclick="getLocation();">iOS Button</button>
<a id="iosButton"class="btn" data-g-label="button1" href="javascript:getLocation();">Get Location</a>
<input type="button" value="Test" onmousedown="javscript:getLocation();" />
В во всех остальных браузерах каждая из перечисленных выше «кнопок» работает. В Safari для iOS ничего не происходит.
Я сделал проверку работоспособности, заменив функцию getLocation () на функцию оповещения, например:
<input type="button" value="Test" onmousedown="javscript:alert('Hello');" />
Это прекрасно работает на iOS Safari. Это наводит меня на мысль, что встроена какая-то система безопасности, которая не позволяет создавать собственные сценарии. Но я уверен, что есть правильный способ сделать это.
Может кто-нибудь помочь мне определить, почему это происходит и как заставить мою пользовательскую функцию работать в Safari для iOS?
Спасибо так много!