为什么我的javascript函数不能仅在iOS Safari中工作?
我正在使用C#和ASP.NET核心构建一个网站。其中一个网页上有一个按钮,用来用javascript在输入框中填写您的地理位置。当我单击按钮时,我无法让iOS中的Safari运行脚本。它似乎在我测试过的任何地方都能工作(Edge上的PC桌面、Chrome、Firefox、Firefox中的iOS设备和Chrome) 以下是嵌入在html页面底部的函数,按钮为:为什么我的javascript函数不能仅在iOS Safari中工作?,javascript,ios,safari,custom-function,Javascript,Ios,Safari,Custom Function,我正在使用C#和ASP.NET核心构建一个网站。其中一个网页上有一个按钮,用来用javascript在输入框中填写您的地理位置。当我单击按钮时,我无法让iOS中的Safari运行脚本。它似乎在我测试过的任何地方都能工作(Edge上的PC桌面、Chrome、Firefox、Firefox中的iOS设备和Chrome) 以下是嵌入在html页面底部的函数,按钮为: <script> var form = document.getElementById("locinput");
<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>
var form=document.getElementById(“locinput”);
函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(prefillLocation);
}否则{
x、 innerHTML=“此浏览器不支持地理位置。”;
}
}
功能预填充位置(位置){
form.value=position.coords.latitude+','+position.coords.longitude;
}
我尝试过用许多不同的方法将此功能附加到按钮上
<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();" />
iOS按钮
在所有其他浏览器中,上述每个“按钮”都可以工作。在SafariforiOS中,什么都不会发生
我通过将getLocation()函数替换为alert函数进行了合理性检查,如下所示:
<input type="button" value="Test" onmousedown="javscript:alert('Hello');" />
这在iOS Safari上运行良好。这让我相信有某种内置的安全机制不允许自定义脚本。但我相信有一个合适的方法
有人能帮我确定为什么会发生这种情况,以及如何使我的自定义功能在Safari for iOS中工作吗
非常感谢 好的,在运行一些测试之后,有几件事:
onclick=“function()”
很好地理位置的访问。尝试使用http:
访问geolocation
将抛出一个可在控制台中查看的错误,否则错误将保持沉默
https
访问geolocation
,浏览器会弹出一个对话框,上面写着“网站[您的站点名称]希望使用您当前的位置”,并带有“不允许”和“允许”按钮geolocation
测试代码:
网间网操作系统
按钮
const form=document.getElementById('locinput');
函数getLocation(){
log('getLocation()');
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(prefillLocation);
}否则{
警报('此浏览器不支持地理位置');
}
}
功能预填充位置(位置){
form.value=position.coords.latitude+','+position.coords.longitude;
}
好的,在运行一些测试之后,有几件事:
onclick=“function()”
很好地理位置的访问。尝试使用http:
访问geolocation
将抛出一个可在控制台中查看的错误,否则错误将保持沉默
https
访问geolocation
,浏览器会弹出一个对话框,上面写着“网站[您的站点名称]希望使用您当前的位置”,并带有“不允许”和“允许”按钮geolocation
测试代码:
网间网操作系统
按钮
const form=document.getElementById('locinput');
函数getLocation(){
log('getLocation()');
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(prefillLocation);
}否则{
警报('此浏览器不支持地理位置');
}
}
功能预填充位置(位置){
form.value=position.coords.latitude+','+position.coords.longitude;
}
可能有什么东西阻塞了该功能。”onclick'应该很好用。让我运行一些测试,我会和你联系的。也许有什么东西阻止了这个功能onclick'应该很好用。让我做一些测试,我会回来的。谢谢你花时间帮助@terrymorse!这是非常有用的信息。不幸的是,这似乎不能解决我的问题。我的网站正在通过HTTPS访问。至少以https和safari开头的URL显示了锁图标。我要看看是否可以将iPhone插入Mac,以便阅读safari调试控制台。我将发布上面我测试成功的代码,也许这会有所帮助。感谢发布代码。这让我很困惑。我刚刚用Safari在mac上测试了这个实时站点,一切正常。因此,我将iPhone连接到mac,启用开发工具,并尝试在单击按钮时查看控制台。什么也没出现。我在想其他可能导致这个问题的因素。我的设备已通过我的公司的移动设备管理注册。我想知道是否实施了任何增强的安全措施。这似乎不太可能,但我要尝试另一款iOS设备。伙计,我觉得自己很笨。显然,很久以前,我选择了不让safari知道我的位置。所以它在没有任何警告的情况下自动否认。当查看控制台时,我说“错误(1):用户拒绝地理位置。”所以这是用户错误。谢谢你的帮助@terrymorse!哈很高兴你把它整理好了。谢谢你花时间来帮助@terrymorse!这是非常有用的信息。不幸的是,这似乎不能解决我的问题。我的网站正在通过HTTPS访问