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

Posted

技术标签:

【中文标题】Swift WKWebView:调用方法时找不到变量错误【英文标题】:Swift WKWebView: Can't find variable error when calling method 【发布时间】:2016-09-30 21:16:34 【问题描述】:

我正在尝试将 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)

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


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
         

      
   

【问题讨论】:

你解决了这个问题吗? @San 这与调用此方法时并非所有 javascript 文件都已加载这一事实有关。我只是使用局部变量来存储纬度和经度。如果你想在加载后执行,你需要添加一个观察者。这可能会有所帮助***.com/questions/29603010/… 感谢您的信息。我有像你这样的类似要求,将一些数据从本机发送到 Angular js Web 应用程序。我设法通过像您所说的那样声明全局变量来解决它。 var updateAccessKey = function (accessKey) console.log("从原生应用生成" + accessKey); 【参考方案1】:

我认为这可以帮助您-我们在这里传递参数的方式。

我们应该把它放在单引号中('\(lat)', '\(lon)') 否则它就像一个变量。

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
     
   

 


【讨论】:

以上是关于Swift WKWebView:调用方法时找不到变量错误的主要内容,如果未能解决你的问题,请参考以下文章

iOS XCode - 为Profile构建时找不到Swift类

Swift:通过 Bridging-Header 文件导入时找不到 CorePlot-CocoaTouch.h 文件

iOS Swift5.0 WKWebView使用JS与Swift交互

WKwebview,js调用用Swift函数播放声音

在Swift中使用YouTube-Player-iOS-Helper时找不到“YTPlayerView.h”文件

新加的服务发布成功,但是调用时找不到