Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的javascript函数不能仅在iOS Safari中工作?_Javascript_Ios_Safari_Custom Function - Fatal编程技术网

为什么我的javascript函数不能仅在iOS Safari中工作?

为什么我的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");

我正在使用C#和ASP.NET核心构建一个网站。其中一个网页上有一个按钮,用来用javascript在输入框中填写您的地理位置。当我单击按钮时,我无法让iOS中的Safari运行脚本。它似乎在我测试过的任何地方都能工作(Edge上的PC桌面、Chrome、Firefox、Firefox中的iOS设备和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>

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中工作吗


非常感谢

好的,在运行一些测试之后,有几件事:

  • 上面的“按钮”没有问题,Mac和iOS上的Safari都能响应
    onclick=“function()”
    很好

  • 如果未通过https:访问页面,Safari将拒绝所有对
    地理位置的访问。尝试使用
    http:
    访问
    geolocation
    将抛出一个可在控制台中查看的错误,否则错误将保持沉默

  • 如果Safari试图通过
    https
    访问
    geolocation
    ,浏览器会弹出一个对话框,上面写着“网站[您的站点名称]希望使用您当前的位置”,并带有“不允许”和“允许”按钮

  • 如果用户成功地克服了所有这些障碍,
    geolocation

    测试代码:

    
    网间网操作系统
    按钮
    const form=document.getElementById('locinput');
    函数getLocation(){
    log('getLocation()');
    if(导航器.地理位置){
    navigator.geolocation.getCurrentPosition(prefillLocation);
    }否则{
    警报('此浏览器不支持地理位置');
    }
    }
    功能预填充位置(位置){
    form.value=position.coords.latitude+','+position.coords.longitude;
    }
    
    好的,在运行一些测试之后,有几件事:

  • 上面的“按钮”没有问题,Mac和iOS上的Safari都能响应
    onclick=“function()”
    很好

  • 如果未通过https:访问页面,Safari将拒绝所有对
    地理位置的访问。尝试使用
    http:
    访问
    geolocation
    将抛出一个可在控制台中查看的错误,否则错误将保持沉默

  • 如果Safari试图通过
    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访问