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

如何调用WKWebView的evaluateJavaScript方法

WKWebView是苹果公司提供的用于在iOS应用中展示网页内容的控件。evaluateJavaScript方法是WKWebView提供的一个方法,用于在网页中执行JavaScript代码。

调用WKWebView的evaluateJavaScript方法的步骤如下:

  1. 首先,创建一个WKWebView对象,并将其添加到视图层级中。
代码语言:txt
复制
let webView = WKWebView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))
view.addSubview(webView)
  1. 加载网页内容。
代码语言:txt
复制
if let url = URL(string: "https://www.example.com") {
    let request = URLRequest(url: url)
    webView.load(request)
}
  1. 等待网页加载完成后,调用evaluateJavaScript方法执行JavaScript代码。
代码语言:txt
复制
webView.evaluateJavaScript("document.getElementById('myElement').innerHTML") { (result, error) in
    if let error = error {
        print("执行JavaScript出错:\(error)")
    } else if let result = result {
        print("执行JavaScript成功,结果为:\(result)")
    }
}

在上述代码中,我们通过evaluateJavaScript方法执行了一段JavaScript代码,该代码获取了网页中id为"myElement"的元素的innerHTML属性值。evaluateJavaScript方法接受两个参数:要执行的JavaScript代码和一个回调闭包。回调闭包中的result参数表示JavaScript代码的执行结果,error参数表示执行过程中的错误信息。

WKWebView的evaluateJavaScript方法可以用于实现与网页的交互,例如获取网页中的数据、修改网页内容等。它在以下场景中特别有用:

  1. 获取网页中的数据:通过执行JavaScript代码,可以获取网页中的特定元素的属性值、文本内容等,从而实现数据的提取和处理。
  2. 修改网页内容:通过执行JavaScript代码,可以修改网页中的元素样式、内容等,实现动态效果和交互。
  3. 与网页进行通信:通过evaluateJavaScript方法,可以在原生应用和网页之间进行双向通信,实现数据的传递和事件的触发。

腾讯云提供了一系列与移动开发和云计算相关的产品,其中与WKWebView相关的产品包括:

  1. 腾讯云移动浏览器(Tencent X5):腾讯云移动浏览器是一款基于WebKit内核的浏览器引擎,可以替代WKWebView在iOS应用中展示网页内容。它具有更好的性能和稳定性,并提供了更多的功能和扩展性。了解更多信息,请访问Tencent X5产品介绍
  2. 腾讯云移动浏览器X5内核调试工具:腾讯云移动浏览器X5内核调试工具是一款用于调试和优化基于腾讯云移动浏览器X5内核的应用的工具。它提供了丰富的调试功能和性能分析工具,帮助开发者快速定位和解决问题。了解更多信息,请访问Tencent X5内核调试工具产品介绍

以上是关于如何调用WKWebView的evaluateJavaScript方法的完善且全面的答案。

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

相关·内容

App与WebView交互方式

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

1.5K20

iOS下JS与OC互相调用(二)--WKWebView 拦截URL

除了代理方法WKWebView使用不太一样,关于WKWebView更详尽讲解和用法,还是自行搜索学习,本文重点还是讲解如何实现JS 与OC 互相调用。...2.拦截URL 使用WKNavigationDelegate中代理方法,拦截自定义URL来实现JS调用OC方法。...关于如何区分执行不同OC 方法,也与UIWebView处理方式一样,通过URL host 来区分执行不同方法: #pragma mark - private method - (void)handleCustomAction...这时候就是OC 调用JS 方法场景。 WKWebView 提供了一个新方法evaluateJavaScript:completionHandler:,实现OC 调用JS 等场景。...,至于在哪里调用,倒是无所谓,我们也可以写在方法实现第一行,或者最后一行。

3.5K50
  • JSBridge 原理

    对 alert、confirm、prompt 等方法做了拦截,如果通过此方式进行 Native 与 JS 交互,需要实现 WKWebView 三个 WKUIDelegate 代理方法。...注入 API 基于 Webview 提供能力,我们可以向 Window 上注入对象或方法。JS 通过这个对象或方法进行调用时,执行对应逻辑操作,可以直接调用 Native 方法。...在 4.4 以前,通过 loadUrl 方法,执行一段 JS 代码来实现。在 4.4 以后,可以使用 evaluateJavascript 方法实现。...evaluateJavascript 方法效率高获取返回值方便,调用时候不刷新WebView,但是只支持 Android 4.4+。...:@"ZcyJsBridge(ev, data)"] JSBridge 使用 如何引用 由 H5 引用 在我司移动端初期版本时采用是该方式,采用本地引入 npm 包方式进行调用

    2.2K40

    iOS_WKWebView与JS交互 Demo

    方法报错 2、WKNavigationDelegate: 这个代理在加载各个过程中都有回调,可以根据项目需求,做响应处理: 前面三个 `func webView(_ webView: WKWebView..., decidePolicyFor ...` 方法是一样,只是带参数不一样,如果实现了,就必须调用`decisionHandler`进行响应处理,否则报错。...其实上面的代理实现已经差不多了,下面补充并说明一下: 1、evaluateJavaScript使用 1)、首先我们在`WKNavigationDelegate``didFinish`方法回调后,...{ print("加载完成: didFinish") // 调用js方法(把标题h1设置成红色) webView.evaluateJavaScript("changeHead()...2)、这里在app原生页面写了两个button调用JS方法/获取信息 func setupButtons() { let baseHeight = (navigationController?.

    3.1K20

    小白必看,JSBridge 初探

    对 alert、confirm、prompt 等方法做了拦截,如果通过此方式进行 Native 与 JS 交互,需要实现 WKWebView 三个 WKUIDelegate 代理方法。...注入 API 基于 Webview 提供能力,我们可以向 Window 上注入对象或方法。JS 通过这个对象或方法进行调用时,执行对应逻辑操作,可以直接调用 Native 方法。...在 4.4 以前,通过 loadUrl 方法,执行一段 JS 代码来实现。在 4.4 以后,可以使用 evaluateJavascript 方法实现。...evaluateJavascript 方法效率高获取返回值方便,调用时候不刷新WebView,但是只支持 Android 4.4+。...:@"ZcyJsBridge(ev, data)"] JSBridge 使用 如何引用 由 H5 引用 在我司移动端初期版本时采用是该方式,采用本地引入 npm 包方式进行调用

    1.5K10

    小白必看,JSBridge 初探

    对 alert、confirm、prompt 等方法做了拦截,如果通过此方式进行 Native 与 JS 交互,需要实现 WKWebView 三个 WKUIDelegate 代理方法。...注入 API 基于 Webview 提供能力,我们可以向 Window 上注入对象或方法。JS 通过这个对象或方法进行调用时,执行对应逻辑操作,可以直接调用 Native 方法。...在 4.4 以前,通过 loadUrl 方法,执行一段 JS 代码来实现。在 4.4 以后,可以使用 evaluateJavascript 方法实现。...evaluateJavascript 方法效率高获取返回值方便,调用时候不刷新WebView,但是只支持 Android 4.4+。...:@"ZcyJsBridge(ev, data)"] JSBridge 使用 如何引用 由 H5 引用 在我司移动端初期版本时采用是该方式,采用本地引入 npm 包方式进行调用

    2.5K10

    记使用WKWebView修改user-agent在iOS 12踩一个坑

    随着摒弃了对iOS老系统支持,项目也开始逐步开始转向WKWebView,本想着新系统应该能填一些WKWebView坑,结果发现还是还是坑不断,这次在iOS12又遇到一个神坑。...为了验证下,我在WKWebViewdelegate方法webView: didFinishNavigation:里打印customUserAgent和通过js方法获取userAgent,结果发现两者真的是不一样...iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko)) 所以,这种设置userAgent方法在...iOS 12是不生效,猜测原因应该是一旦实例化一个WKWebView并且调用evaluateJavaScript: 更新其userAgent不生效。...但是一旦我们刷新下当前web页面,即调用webviewreload方法,这个customUserAgent就生效了。所以这应该是苹果iOS12系统一个bug。

    9.8K50

    H5和移动端通信

    JS调用iOS方法url拦截弹窗拦截(alert、confirm、prompt)JavaScriptCore(只适用于UIWebView)WKScriptMessageHandler(只适用于WKWebView...,iOS8+)Bridge第三方框架(适用于UIWebView和WKWebView)1. url拦截url拦截是在H5请求一个地址后,客户端拦截住这个地址,对地址进行解析处理H5中调用iOS方法代码:<...弹窗拦截弹窗包括:alert、confirm、prompt, 和url拦截类似都在回调方法中处理以WKWebViewalert为例:- (void)webView:(WKWebView *)webView...JSBridgeJS桥接第三方框架(1)第三方框架DSBridge(2)第三方框架WebViewJavascriptiOS调用JS方法1.  UIWebView2.  WKWebView1. ...");图片Android调用JS1. loadUrl()2. evaluateJavascript() (Android4.4之后)1. loadUrl// 调用H5中loginResult函数webView.loadUrl

    1.3K30

    iOS小技能:WKWebView与JS交互

    框架中负责网页渲染与展示类,相比UIWebView速度更快,占用内存更少,支持更多HTML特性 I JS调用iOS 使用例子:点击页面图片,调用iOS方法进行图片放大显示 1.1 JS代码: window.webkit.messageHandlers.openImage.postMessage...-evaluateJavaScript:completionHandler:方法来实现 WKWebView-evaluateJavaScript:completionHandler:方法可以执行JS...但只有在整个webView加载完成之后调用方法才会有响应 2.1 执行JS iOS使用WKWebView-evaluateJavaScript:completionHandler:方法执行拼接好JS...WKWebView在每次加载请求完成后会调用方法 (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation...WKNavigationDelegate 代理方法调用流程 UIProcess、WebContent、NetworkProcess 三大进程间通信关系 NetworkProcess进程: 主要负责网络请求加载

    6.5K30

    iOS中WKWebView交互使用总结

    ,需要打开新页面时,将先调用这个方法。...='none';" completionHandler:nil]; 值得注意是,这里其实是通过调用webView直接使用JS代码实现操作,如果有需要还可以实现别的功能,而且这个方法最后有一个执行完毕之后...重点:JS交互 ---- WKWebView交互方法和之前UIWebView其实本质上没有什么太大差别,都是通过发送方法名找到对应方法执行对应操作。...self.webView.configuration.userContentController.userScripts.count>0) { //移除所有的监听 [self removeAllScriptMsgHandle]; } //对JS调用方法进行监听...//用来接收js调用本地方法拦截器 -(void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage

    2.9K40

    MessageHandler 高级用法一:封装MessageHandler

    内部处理类 这就造成了对原始调用方法有一定影响 WKWebView iOS 8 之后,无疑没有理由不使用 WKWebView 在 JS 端只需要 window.webkit.messageHandler...在 APP 端只需要 evaluateJavaScript 既可以调用 JS 方法 通过上面三种方法便可以实现大多数 JS 原生交互 WKUserScript 通过configuration.userContentController.addUserScript...github.com/TieShanWang/WKJSHandler 上面找到 当然也可以直接使用 cocoapod 使用 pod 'WKJSHandler' 安装 当然现在实现了 JS 和 Native 之间直接方法调用...只能够调用APP一个方法,并且传参,没有办法直接回调 JS。...同样在我们调用 JS 方法后也希望 JS 在处理完毕之后会给我们一个回调 我们需求是 “回调“ 在下一章 将会解决一下回调问题 MessageHandler 高级用法二:原生调用JS 实现回调

    2.7K40
    领券