2019-06-12 如何解决wkwebview中js报出的错误:A JavaScript exception occurred

错误描述如下:

Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo=0x7bfb3c30 {NSLocalizedDescription=A JavaScript exception occurred}

这条错误信息不显示js报错的在哪一行,也不现实js错误提示信息,我们该如何处理这类错误呢?
我查了很多资料,并不能解决问题,知道我发现这个回答:
https://stackoverflow.com/questions/28964387/send-data-to-wkwebview
stackoverflow上有人提出这个问题的一种解决方式:

being executed, which is not valid JS.

我因此联想到,这种错误提示,不是在js文件中执行报错,也不是js函数名找不到,而是:

它压根不是一个合法js函数调用方式。

从这点出发,我说说我的问题:我向WKWebView传值,在iOS10-12系统上一点没有问题,在iOS9上立马出现上述错误。我应该从js的调用形式上出发。
函数名(参数)
这就是最基本的js调用方式,函数名没啥问题,问题出在参数上,
只能说苹果在iOS10之后,做了传参的优化,使得参数兼容性大幅提高。

我使用简单差异性对比实验的方法:
我写一个简单的js函数,然后在已知确定参数里面传入一些无关参数。这些参数就是我上面js函数里传递的复杂参数的一部分。
只要出现错误,即参数形式不被认可。
没出现错误,参数形式被iOS9系统认可。
以jsFunc({key:String})为例(iOS语言swift)
通过研究发现:
1.String里面不能出现",必须使用单引号
否则iOS9系统传参时报错。
2.String必须字符串,不能出现可选值类型
否则iOS9系统传参时报错。
3.key:value 只能是传统的json格式,不能像echart里面直接可以函数的方式json配置(类似js对象),如下所示传参,iOS9报错

formatter: function(params) {
      var res = params[0].name + "<br />";
      var numRes = ""
        ........
        res += params[i].marker + params[i].seriesName + ":" + numRes + "<br />";
      }
      return res;
    },

后续补充:NSLocalizedDescription=A JavaScript exception occurred 这种描述只存在iOS9系统中。
通过上述方法,我可以将参数传递过去。
然后新的问题出现了,依然报这种错误:A JavaScript exception occurred(iOS9的系统开发者是多懒啊。)
其实这个错误是我将jsfunc给注释了,在iOS10中会报错:js函数找不到。
另外:
采用js文件注入的方式添加函数,在iOS9中会始终报错:
A JavaScript exception occurred。
我猜测它的本意是js函数找不到。可能iOS9中的WKWebView evaluateJavaScript(_:completionHandler:) 方法只会在html的Script标签中找已存在js函数吧,注入的js函数根本不在它查找的范围吧。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,137评论 6 511
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,824评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,465评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,131评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,140评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,895评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,535评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,435评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,952评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,081评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,210评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,896评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,552评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,089评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,198评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,531评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,209评论 2 357

推荐阅读更多精彩内容