【问题标题】:WKwebview Javascript function GeolocationWKwebview Javascript 函数地理定位
【发布时间】:2018-06-09 21:02:28
【问题描述】:

大家好,我希望你们能帮助我。

我有一个打开网站“example.com”的 Wkwebview。本网站包含一个包含许多功能的 Javascript 文件(Javascript 不在应用程序的本地商店中,它是通过链接推荐的)。在这个网站上也有一个按钮来定位你。如果我按下此按钮,将调用 Javascript 函数“getLocation()”,见下文。此功能显示您的经度和纬度!

var x = document.getElementById("location");

function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } 
}

function showPosition(position) {
    x.innerHTML = "Latitude: " + position.coords.latitude + 
    "<br>Longitude: " + position.coords.longitude;
}

我可以在本机应用程序中显示带有经度和纬度的navigator.geolocation.getCurrentPosition。问题是 WKwebview 总是询问我是否允许找到我(请注意,该应用程序已经有权找到我,它总是询问我的 WebView)

我的问题是如何在没有权限请求的情况下将数据从应用程序传输到 Javascript。我读了一些关于WKWebViewConfigurationevaluateJavaScript(_:completionHandler:)NSBundle and NSURLRequest 的内容,但什么是正确的方法或有更好的方法? 请帮助我,我不知道如何继续

【问题讨论】:

  • 您不能像您所描述的那样在网站和本机应用程序之间“转移权限”。
  • 不,我不想转移权限。我想传输 webview 不询问我的位置数据。

标签: javascript ios swift wkwebview wkwebviewconfiguration


【解决方案1】:

仅通过使用 evaluateJavaScript(),您可以在 WKWebView 中运行任何 JavaScript 并在 Swift 中获取结果。这可以是任何 JavaScript,这意味着您可以直接挖掘页面并提取您需要的任何信息。

这是一个例子:

webView.evaluateJavaScript("document.getElementById('someElement').innerText") { (result, error) in
    if error != nil {
        print(result)
    }
}

注意:请传递正确的 javascript 以获取值,否则您可能会返回 nil

【讨论】:

  • 仅通过使用 evaluateJavaScript(),您可以在 WKWebView 中运行任何 JavaScript 并在 Swift 中获取结果。这是一个问题,因为在第二步中,javascript 将这些数据包含在数据库中。不过我会试试看的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
相关资源
最近更新 更多