相关疑难解决方法(0)

从WKWebView中的本机代码调用JavaScript函数

在iOS 8中使用WKWebView,如何从本机端运行JavaScript函数或以其他方式从本机端到JavaScript进行通信?似乎没有类似于UIWebView的方法stringByEvaluatingJavaScriptFromString:.

(我可以- addScriptMessageHandler:name:configuration.userContentController对象上使用以允许从JS到本地的通信,但我正在寻找相反的方向.)

javascript webkit ios wkwebview

46
推荐指数
3
解决办法
5万
查看次数

实际显示视图时的WKWebView通知

我想拍一张截图WKWebView.我在Web视图加载完成后立即调用该方法drawViewHierarchyInRect(屏幕更新设置为true) - 为此我观察loading了Web视图的属性.但是,我注意到,当Web视图通知我加载已完成时,它实际上并不显示在屏幕上.这就是截图始终只是白色的原因.当我在加载后0.5秒拍摄屏幕截图(显然太长)时,屏幕截图显示了所需的结果.我的问题是:我不知道网页视图何时实际显示在屏幕上,我可以将延迟设置为0.05,但我不能100%确定它每次都有效.因此,我的问题是:当Web视图实际显示并准备好截屏时,如何通知我.

提前致谢!

BTW:我正在使用Swift 2.0和iOS 9与Xcode 7(官方发布)

screenshot swift wkwebview ios9

12
推荐指数
1
解决办法
3584
查看次数

获取使用WKWebView挖掘的所有项目的URL

我在iOS中加载了一个WKWebView页面.如果用户导航到WKWebView中的另一个页面,我可以获得他们点击的URL,如下所示:

var clickedUrl = String()

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {

    clickedUrl = webView.URL?.absoluteString as String! // GETS URL OF CURRENT PAGE LOADED
}
Run Code Online (Sandbox Code Playgroud)

如果用户访问YouTube,请点击"url = http://www.youtube.com",这很棒.但是......如果用户点击视频 - 没有.另一个视频 - 什么都没有.我没有得到点击视频的网址.在Vimeo和其他各种网站上也是如此.

我已经在这里做了一些研究并发现了其他帖子,看起来这与'WKWebView没有报告在非主框架上加载完成'有关,但没有解释如何获取已加载的URL .我猜这与YouTube等网站使用JavaScript导航到其网站上的其他网页并加载它们有关.

我也试过了webView(_:decidePolicyForNavigationAction:).此功能更详细,但此功能也不会检测在YouTube等网站中点击的链接的网址.我想要做的是获取用户点击的所有内容的URL.我猜我需要深入NSURL或NSURLRequest才能得到这个,但我无法弄清楚如何做到这一点.任何帮助将不胜感激.

道歉 ...请参阅重复/类似问题:检测WKWebView何时完成加载

url ios swift wkwebview

6
推荐指数
1
解决办法
4122
查看次数

Swift WKWebView:调用方法时找不到变量错误

我正在尝试将 GPS 坐标传递给方法调用setIOSNativeAppLocation。我有下面的代码,但我收到此错误:

A JavaScript exception occurred" 
UserInfo={WKJavaScriptExceptionLineNumber=1, WKJavaScriptExceptionMessage=
ReferenceError:
Can't find variable: setIOSNativeAppLocation, WKJavaScriptExceptionSourceURL=
http://mywebsite.com, NSLocalizedDescription=
A JavaScript exception occurred, WKJavaScriptExceptionColumnNumber=24})
Run Code Online (Sandbox Code Playgroud)

我不确定它是否与语法或其他任何东西有关。如果有人知道我做错了什么,我将不胜感激。


func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {



   if(myCurrentLoc != nil){


      let lat = myCurrentLoc.coordinate.latitude
      let lon = myCurrentLoc.coordinate.longitude


      print(lat);
      print(lon);

      webView.evaluateJavaScript("setIOSNativeAppLocation(\(lat), \(lon));")  { (result, error) in
         guard error == nil else {
            print("there was an error")
            print(error)
            return
         }

      }
   }
}
Run Code Online (Sandbox Code Playgroud)

swift wkwebview swift3

5
推荐指数
1
解决办法
7182
查看次数

标签 统计

wkwebview ×4

swift ×3

ios ×2

ios9 ×1

javascript ×1

screenshot ×1

swift3 ×1

url ×1

webkit ×1