WkWebView Evaluatejavascript返回不支持的类型错误 [英] WkWebView Evaluatejavascript returns unsupported type error

查看:2916
本文介绍了WkWebView Evaluatejavascript返回不支持的类型错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在向javascript函数发送值并获得结果.但是,在以下代码下运行时,我收到错误域= WKErrorDomain代码= 5"JavaScript执行返回了不支持的类型的结果" UserInfo = {NSLocalizedDescription = JavaScript执行返回了不支持的类型的结果}"错误;

I'm sending a value to javascript function and get a result. However, I'm getting "Error Domain=WKErrorDomain Code=5 "JavaScript execution returned a result of an unsupported type" UserInfo={NSLocalizedDescription=JavaScript execution returned a result of an unsupported type}" error when run below code;

webView?.evaluateJavaScript("getURL()") { (result, error) in
            if let error = error
            {
                print("\(error)");
                return
            }
            if let song = result as? String
            {
                print("\(song)");
            }
        }

和如下的javascript代码;

and javascript code as follows;

    function getURL(){
  CloudKit.configure({
                         containers: [{
                                      // To use your own container, replace containerIdentifier and apiToken
                                      containerIdentifier: 'iCloud.com.hello.myapp',
                                      apiToken: 'myApiKey',
                                      environment: 'development'
                                      }]
                         });
                         console.log("cloudkitloaded");

                         var self = this;
                         console.log("get default container");
                         var container = CloudKit.getDefaultContainer();

                         console.log("set publicDB");
                         var publicDB = container.publicCloudDatabase;
                         self.items = ko.observableArray();

                         // Fetch public records
                         //  self.fetchRecords = function() {
                         console.log("fetching records from " + publicDB);
                         var query = { recordType: 'Musics'};

                         // Execute the query.
                         return publicDB.performQuery(query).then(function(response) {
                                                                  if(response.hasErrors) {
                                                                  console.error(response.errors[0]);
                                                                  return;
                                                                  }
                                                                  var records = response.records;
                                                                  var numberOfRecords = records.length;
                                                                  if (numberOfRecords === 0) {
                                                                  console.error('No matching items');
                                                                  return;
                                                                  }

                                                                  console.log(records.length + " records")
                                                                  //console.log(records[0].fields.Song_File.value.downloadURL);
                                                                  self.items(records);


                                                                  myVar = records[emre].fields.Song_File.value.downloadURL;
                                                                  document.getElementById('someId').innerHTML = myVar;


                                                                  });
                                                                  return "emre";

  };

推荐答案

我遇到了同样的事情,搜索将我带到了这里.后来,我找到了答案:

I ran into same thing, and search brought me here. Later, I found the answer:

这可能是由于您的javascript返回了nil,然后将其报告为错误.只允许返回一个字符串.因此,只需将这些return语句更改为return ''或返回'error msg'`即可解决此问题.

This is probably due to returning nil from your javascript, which is then reported as an error. Only a string is allowed to be returned. So just changing those return statements to return '' or return 'error msg'`should fix it.

这篇关于WkWebView Evaluatejavascript返回不支持的类型错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆