首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Objective-C中对JavaScript执行evaluateJavaScript时遇到"A WKWebView exception exception“

Objective-C中的WKWebView类是用于显示Web内容的控件,它提供了执行JavaScript代码的方法evaluateJavaScript。当使用evaluateJavaScript方法执行JavaScript代码时,有时会遇到"A WKWebView exception exception"的错误。

这个错误通常表示在执行JavaScript代码时出现了异常。出现异常的原因可能是JavaScript代码本身错误、与JavaScript交互的数据类型不匹配、页面加载未完成等等。

为了解决这个问题,可以采取以下方法:

  1. 检查JavaScript代码:首先检查待执行的JavaScript代码是否正确无误,确保语法正确并且符合预期的逻辑。可以通过在浏览器中测试相同的JavaScript代码来验证其是否有效。
  2. 确保页面加载完毕:在调用evaluateJavaScript方法之前,确保WKWebView已经完全加载了要执行JavaScript代码的页面。可以通过监听WKWebView的加载状态,等待页面加载完成后再执行JavaScript代码。
  3. 检查JavaScript交互数据类型:如果JavaScript代码涉及与Objective-C之间的数据交互,需要确保数据类型的匹配。例如,如果JavaScript代码期望传递一个字符串参数,那么在调用evaluateJavaScript方法时,需要将参数以字符串形式传递给它。
  4. 处理异常情况:使用try-catch语句捕获JavaScript执行过程中的异常。通过捕获异常,可以对错误进行处理或记录,并避免异常导致程序崩溃。
  5. 使用WKWebView的configuration属性:可以尝试更改WKWebView的configuration属性来解决异常。例如,可以尝试更改WKWebViewConfiguration的preferences属性,以修改JavaScript的运行环境。

腾讯云相关产品和产品介绍链接地址:

以上是针对Objective-C中使用evaluateJavaScript遇到"A WKWebView exception exception"的问题的解决方法和腾讯云相关产品介绍。希望对您有帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

小白必看,JSBridge 初探

JS 通过这个对象或方法进行调用时,执行对应的逻辑操作,可以直接调用 Native 的方法。使用该方式,JS 需要等到 Native 执行完对应的逻辑后才能进行回调里面的操作。...Android 主要有两种方式实现。 4.4 以前,通过 loadUrl 方法,执行一段 JS 代码来实现。 4.4 以后,可以使用 evaluateJavascript 方法实现。...相关代码如下: webView.loadUrl("javascript:" + javaScriptString); webView.evaluateJavascript(javaScriptString...WKWebview 可以通过 evaluateJavaScript:javaScriptString 来实现,支持 iOS 8.0 及以上系统。...= nil) // javaScriptString 需要调用的 JS 代码 // completionHandler 执行后的回调 // objective-c [jsContext evaluateJavaScript

2.6K10
  • JSBridge 原理

    alert、confirm、prompt 等方法做了拦截,如果通过此方式进行 Native 与 JS 交互,需要实现 WKWebView 的三个 WKUIDelegate 代理方法。...JS 通过这个对象或方法进行调用时,执行对应的逻辑操作,可以直接调用 Native 的方法。使用该方式,JS 需要等到 Native 执行完对应的逻辑后才能进行回调里面的操作。...Android 主要有两种方式实现。 4.4 以前,通过 loadUrl 方法,执行一段 JS 代码来实现。 4.4 以后,可以使用 evaluateJavascript 方法实现。...WKWebview 可以通过 evaluateJavaScript:javaScriptString 来实现,支持 iOS 8.0 及以上系统。...= nil) // javaScriptString 需要调用的 JS 代码 // completionHandler 执行后的回调 // objective-c [jsContext evaluateJavaScript

    2.2K40

    小白必看,JSBridge 初探

    JS 通过这个对象或方法进行调用时,执行对应的逻辑操作,可以直接调用 Native 的方法。使用该方式,JS 需要等到 Native 执行完对应的逻辑后才能进行回调里面的操作。...Android 主要有两种方式实现。 4.4 以前,通过 loadUrl 方法,执行一段 JS 代码来实现。 4.4 以后,可以使用 evaluateJavascript 方法实现。...相关代码如下: webView.loadUrl("javascript:" + javaScriptString); webView.evaluateJavascript(javaScriptString...WKWebview 可以通过 evaluateJavaScript:javaScriptString 来实现,支持 iOS 8.0 及以上系统。...= nil) // javaScriptString 需要调用的 JS 代码 // completionHandler 执行后的回调 // objective-c [jsContext evaluateJavaScript

    1.5K10

    iOS开发WKWebView与JS的交互

    span id="jsParamFuncSpan"style="color: red; font-size: 50px;"> <script type="text/<em>javascript</em>...<em>在</em>点击前三个按钮的时候会调用方法: // 警告框 - (void)webView:(<em>WKWebView</em> *)webView runJavaScriptAlertPanelWithMessage:(NSString...注意:<em>在</em>利用UIWebView展示网页的时候我们如果要想与JS进行交互那么我们就得获取JS代码<em>中</em>的方法名,而我们<em>在</em>使用<em>WKWebView</em>的时候就不用了。...客户端<em>中</em>需增加的代码: // 注入JS对象名称AppModel,当JS通过AppModel来调用时, // 我们可以<em>在</em>WKScriptMessageHandler代理<em>中</em>接收到  [config.userContentControlleraddScriptMessageHandler...message.nameisEqualToString:@"AppModel"]) {   // 打开外部链接 NSLog(@"找到了注入的JS对象...");     } } OC调用JS代码: [self.webView evaluateJavaScript

    2.3K20

    iOSWKWebView交互使用总结

    然后是WKWebView的基本设置, self.webView.scrollView.bounces = NO; self.webView.navigationDelegate = self; 设置了取消弹性和代理...didFailProvisionalNavigation:(WKNavigation *)navigation withError:(NSError *)error //请求之前,决定是否要跳转:用户点击网页上的链接,需要打开新页面,...限制用户选择以及长按操作 ---- 有时候,我们会遇到一个比较头疼的问题,我们不想让用户长按选择或者有弹窗,那么这时我们需要添加两行代码来禁止这一系列行为。...//WKWebview 禁止长按(超链接、图片、文本...)弹出效果 [self.webView evaluateJavaScript:@"document.documentElement.style.webkitTouchCallout...重点:JS交互 ---- WKWebView的交互方法和之前的UIWebView其实本质上没有什么太大的差别,都是通过发送方法名找到对应的方法执行对应的操作。

    2.9K40

    MessageHandler 高级用法一:封装MessageHandler

    iOS JS 和原生APP交互有许多种方法 WebViewJavascriptBridge 是我用的比较多的一个库,但是 WebViewJavascriptBridge 使用时最大的一个缺点就是...内部的处理类 这就造成了原始的调用方法有一定的影响 WKWebView iOS 8 之后,无疑没有理由不使用 WKWebView JS 端只需要 window.webkit.messageHandler...WKScriptMessageHandler, name:String) 并且实现协议方法即可 APP 端只需要 evaluateJavaScript 既可以调用 JS 方法 通过上面三种方法便可以实现大多数的...data block 进行持有,从而可以实现异步回调 所以 WKScriptMessageHandler 协议方法执行的时候,根据name 取出来对应的block进行回调 import UIKit...evaluateJavaScript(javascript, completionHandler: result) } /// inject javascript code

    2.7K40

    技术 | Hybrid载体的变化(一)

    ,我对于他的理解,苹果在iOS8推出的新框架“Webkit”,其中WKWebView就是用来替换原来的UIWebView,一句话,你用它原来UIWebView出现的各种问题都被解决了。...如下都简称WK 正常情况下,我们做Hybrid容器基本会用到WKWebView几乎全部的特性,但是也有三个其中重中之重的地方,那就是JavaScript的交互与网页应用的性能监控。...初始化WKWebView你还需要配置一个Conf,这个Conf你可以添加一个属性,这个属性JavaScript这一边你可以通过window.webkit.messageHandlers.icepyApp...= WKWebView(frame: self.view.frame, configuration: config) 最终当你需要向Native发送消息就需要使用这个属性并调用其postMessage...你身边如果有朋友混合领域(跨技术栈)或全栈,编程感悟感兴趣,可以转发给他们看哦,^_^先谢过啦。----

    86630

    记使用WKWebView修改user-agentiOS 12踩的一个坑

    随着摒弃了iOS老系统的支持,项目也开始逐步开始转向WKWebView,本想着新系统应该能填一些WKWebView的坑,结果发现还是还是坑不断,这次iOS12又遇到一个神坑。...iOS 10/11上面,这段代码执行都好好的,并且也没什么问题。结果现在在iOS 12beta版本里面突然不生效了,自己追加的userAgent没有添加成功。...为了验证下,我WKWebView的delegate方法webView: didFinishNavigation:里打印customUserAgent和通过js方法获取的userAgent,结果发现两者真的是不一样的...12是不生效的,猜测原因应该是一旦实例化一个WKWebView并且调用了evaluateJavaScript: 更新其userAgent不生效。...webview.customUserAgent = agent + " customAgent" } } 总结:WKWebView虽然性能比UIWebView更好,但是一些细节处理上,还是需要注意的

    9.9K50

    App与WebView交互方式

    通过执行函数evaluateJavaScript:completionHandler:,我们可以传递app端的数据给webview,并触发html脚本函数的调用,从而响应app的行为。...html的脚本添加iframe对象,通过设置iframe的src属性,可成功触发WKWebview的代理方法调用。..., 我们可以代理方法拦截请求,首先iframe的src的值也就是我们自定义的scheme,通过该scheme的判断来得知我们想干什么,从而去调用app对应的函数。...除了可以自定义scheme传递我们需要的参数外,我们可以html的脚本把数据储存好,通过evaluateJavaScript:completionHandler:来调用脚本函数来返回需要的参数...具体如何通过WKWebview传递过来的数据来判断该执行哪个函数,有一种实现方式: 用一个字典来储存对应函数地址,这样我们可以通过传递过来的key来获得对应的函数。

    1.5K20

    iOS下JS与OC互相调用(四)--JavaScriptCore

    JavaScriptCore.h ** 1.1 JSVirtualMachine ** JSVirtualMachine看名字直译是JS 虚拟机,也就是说JavaScript一个虚拟的环境执行,...它通过加锁虚拟机,保证JSVirtualMachine是线程安全的,如果要并发执行JavaScript,那我们必须创建多个独立的JSVirtualMachine实例,不同的实例执行JavaScript...** 1.2 JSContext ** JSContext是为JavaScript执行提供运行环境,所有的JavaScript执行都必须在JSContext环境。...JSValue包含了每一个JavaScript类型的值,通过JSValue可以将Objective-C的类型转换为JavaScript的类型,也可以将JavaScript的类型转换为Objective-C...3.避免循环引用,因为block 会持有外部变量,而JSContext也会强引用它所有的变量,因此block调用self,要用__weak 转一下。

    2.9K10

    直播卖货系统源码,如何展示html格式的商品详情

    开发iOS版的直播卖货系统源码过程,如何在html上展示商品详情,下面小编将从WKWebView入手,来介绍下实现过程。...加载完成的代理方法更改webView的frame - (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified...addObject:str]; } }];  } imageArray = [NSMutableArray arrayWithArray:arrImgURL]; return arrImgURL; } 4、WKWebView...的代理方法拦截图片添加的点击方法,可使用HZPhotoBrowser来展示图片 - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction...:%@",navigationAction.request.URL.absoluteString); 以上,就是开发直播卖货系统源码,利用WKWebView展示html格式的商品详情的过程。

    1.1K30

    WKWebView 那些坑

    1.2、检测webView.title是否为空 并不是所有页面白屏的时候都会调用上面的回调函数,比如,最近遇到一个高内存消耗的H5页面上present系统相机,拍照完毕后返回原来页面的时候出现白屏现象...3、WKWebView NSURLProtocol问题 WKWebView独立于app进程之外的进程执行网络请求,请求数据不经过主进程,因此,WKWebView上直接使用NSURLProtocol...独立进程里执行网络请求。...另一个crash发生在WKWebView退出前调用 -[WKWebView evaluateJavaScript:completionHandler:] 执行JS代码的情况下。...WKWebView退出并被释放后导致completionHandler变成野指针,而此时javaScript Core还在执行JS代码,待javaScript Core执行完毕后会执行completionHandler

    17.3K21
    领券