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

如何通过WebView从javascript到Cocoa应用程序接收alert()动作

要在WebView中从JavaScript到Cocoa应用程序接收alert()动作,您可以使用WKWebView的navigationDelegate。以下是一个简单的示例,说明如何实现这一点:

  1. 首先,确保您已经导入了WebKit框架:
代码语言:swift
复制
import WebKit
  1. 在您的ViewController中,创建一个WKWebView实例,并设置其navigationDelegate:
代码语言:swift
复制
class ViewController: UIViewController, WKNavigationDelegate {
    var webView: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.navigationDelegate = self
        view.addSubview(webView)
    }
}
  1. 然后,实现webView(_:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:)委托方法,该方法将在JavaScript调用alert()时触发:
代码语言:swift
复制
func webView(_ webView: WKWebView, runJavaScriptAlertPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping () -> Void) {
    let alertController = UIAlertController(title: "Alert", message: message, preferredStyle: .alert)
    alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in
        completionHandler()
    }))

    present(alertController, animated: true, completion: nil)
}

现在,每当WebView中的JavaScript代码调用alert()时,都会弹出一个带有消息的警告框。当用户点击“OK”按钮时,completionHandler将被调用,并且JavaScript代码将继续执行。

请注意,这个示例仅适用于WKWebView,如果您使用的是UIWebView,您需要使用其他方法来实现类似的功能。

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

相关·内容

macOS webview编程

1.添加Webview 最简单添加webview的方法就是直接在Interface Builder中把Webview拖入窗口并且用鼠标拖动到指定位置和指定大小,随后在程序中加上对应的变量: @...addSubview(webView)把webview控件插入界面中。 2.载入网页 可以直接导向某个网页,也可以先在本地启动一个静态页面文件,后续一些工作可以在本地静态网页中用js处理。...JSswift的调用要复杂的多了。 首先在初始化的时候,要加上一句: webView!....6.响应js中的警告窗 通常的webview都是不允许js中的alert警告窗的,一方面是为了应用程序整体的效果;另一方面,webview作为一个空间,自己没有UI的控制权,所以类似的工作,是要有应用程序自己实现警告框窗口的...{ NSLog("msg of alert: %@",message) } 如果不满足于只是得到警告消息,要自己在这个函数中使用cocoa的警告窗来显示相关的信息。

5.2K50
  • Android开发笔记(一百五十一)WebViewJavaScript交互的四种形式

    可做为企业开发者,你的App通常要嵌入自家公司的网页,如此一来,还得考虑App与Web之间的消息传递,这就涉及App的原生代码与Web的JS代码之间的通信了。...App与Web做为消息通信的双方,具体的交互行为分为四类,包括:App通知Web执行某项动作、App主动Web获取信息、Web通知App执行某项动作,Web主动App获取信息,这四种行为详细说明如下...App通知Web执行某项动作 Web提供一个JavaScript方法,然后App由WebView调用loadUrl加载该JS方法,具体的App代码如下所示: wv_js.loadUrl("javascript...App主动Web获取信息 WebView对象调用evaluateJavascript方法,该方法通过回调接口ValueCallback获得JS的返回串,具体的App代码如下所示: if (Build.VERSION.SDK_INT...WebView要调用setWebChromeClient方法设置JS的解释客户端,从而避免JS中alert方法不弹窗的问题,因为JS页面的渲染需要WebChromeClient去实现。 2.

    1.3K10

    iOS中WebKit框架应用与解析 原

    iOS中WebKit框架应用与解析 一、引言         在iOS8之前,在应用中嵌入网页通常需要使用UIWebView这样一个类,这个类通过URL或者HTML文件来加载网页视图,功能十分有限,只能作为辅助嵌入原生应用程序中...虽然UIWebView也可以做原生与JavaScript交互的相关处理,然而也有很大的局限性,JavaScript要调用原生方法通常需要约定好协议之后通过Request来传递。...JavaScript代码的注入也是通过WKUserContentController来完成的,使用addUserScript:方法来注入JavaScript,其中需要通过WKUserScript类来生成要注入的对象...:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation{ } //当主机接收到的服务重定向时调用...调用alert方法后回调的方法 message中为alert提示的信息 必须要在其中调用completionHandler() -(void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage

    1.9K40

    Android 渗透测试学习手册 第七章 不太知名的 Android 漏洞

    WebView也用于各种 Android 应用程序,例如提供注册和登录功能的应用程序。它通过应用程序的布局中构建其移动网站,来显示应用程序中的 Web 内容。...这表示他们能够修改响应数据,并且如果网站加载 JavaScript 内容,则可以完全控制 JavaScript 内容。.../阅读通过 Drozer 利用WebView的更多信息。...让我们尝试分析恶意软件作者如何修改合法应用程序,来创建它的受感染版本。执行此操作的最简单的方法之一是编写一个简单的恶意应用程序,并将其所有恶意活动放在服务中。...接下来,我们需要将malware.smali文件复制 smali 文件夹,它位于我们反编译的合法应用程序的文件夹中 。

    1.2K10

    WKWebView

    6,WKWebView是多进程组件,这意味着会APP内存中分离内存到单独的进程中。...其他的区别如下: 1,UIWebView是UIKit框架的一部分,可以在应用程序内使用,无需导入任何内容;而WKWebView使用的是WebKit.framework,使用的时候需要导入应用程序中。.../收到服务器重定向之后调用 (接收到服务器跳转请求) - (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation...WKUIDelegate的代理方法我们用到的不多,其主要是处理一些页面中常用到的JS逻辑,比如alert、confirm等。...7,本文主要介绍了如何通过WKWebView来展示一个页面,其实,WKWebView不仅仅只有展示的功能,它还能够和Native进行交互。而且iOS中的web应用,起重点就是与Native进行交互。

    6K20

    android调用服务端的js

    2,getContents()方法,流中读取内容,显示在界面上。...关于这个问题,最核心的就是要知道JS事件这一个动作,JS与Java进行交互我们知道,有以下几种,比prompt, alert等,这样的动作都会对应到WebChromeClient类中相应的方法,对于prompt...    String defaultValue, JsPromptResult result)   通过这个方法,JS能把信息(文本)传递Java,而Java也能把信息(文本)传递JS中,通知这个思路我们能不能找到解决方案呢...【3】我们需要动态生成一段声明Javascript方法的JS脚本,通过loadUrl来加载它,从而注册html页面中,具体的代码如下: javascript:(function JsAddJavascriptInterface...关于这个问题,我们的方法是通过Js声明的,通过loadUrl的形式来注入页面中,其实本质相当于把我们这动态生成的这一段Js直接写在Html页面中,所以,这些Js中的window中虽然包含了我们声明的对象

    1.9K90

    使用 Cordova 构建应用的流程

    它们为 Cordova 和本地组件提供了一个相互通信和绑定标准设备 api 的接口。 这使你能够 JavaScript 调用本机代码。 预装环境 下载并安装 Node.js。...它在 WebView 导航新页面或刷新时执行,这会重新加载 JavaScript。...移动平台的 sdk 通常与执行设备映像的模拟器捆绑在一起,这样你就可以主屏幕启动应用程序,看看它是如何与许多平台功能相互作用的。...本节展示如何为支持平台创建自己的 WebView 组件,以充分利用 Cordova api。 然后,您可以在混合应用程序中部署这些 Cordova 应用程序组件和本地组件。...用户加载一组初始资源(HTML、 CSS 和 JavaScript) ,并通过 AJAX 完成进一步的更新(显示新视图、加载数据)。 Spa 通常用于更复杂的客户端应用程序。 就是一个很好的例子。

    4.3K11

    .NET混合开发解决方案11 WebView2加载的网页中JS调用C#方法

    WebView2控件通过将对象传递Web网页,使应用程序能够弥合web和本机应用程序(客户端程序:WinForm、WPF、WinUI、Win32)之间的鸿沟。...可以使用WebView2的AddHostObjectToScript()将它们投影JavaScript中。   在开发WebView2应用程序时,需要一个本机对象,它的方法或属性很有用。...在这种情况下,本机端代码可以将对象传递应用程序的web端JavaScript代码,以便JavaScript代码可以重用本机API的方法。...web端显示键盘功能。 JavaScript是沙盒,限制了它在本机端的能力。例如,如果需要在本机端访问文件,则必须使用本机文件系统。...如果您有一个通过AddHostObjectToScript向JavaScript公开的本机对象,则可以使用它来操作本机文件系统上的文件。 下面通过一个Demo来讲解如何实现JS调用C#方法。

    11K10

    鸿蒙-webview的使用和JS交互(附源码)【鸿蒙专题04】

    通过WebView加载Web页面 WebView加载页面分为加载Web页面和加载本地Web页面两种情况,接下来我们将分别进行介绍。...实现应用与WebView中的Web页面间的通信 本教程以本地Web页面"resources/rawfile/test.html"为例介绍如何实现应用与WebView中的Web页面间交互。...// 在这里处理Js的方法的返回值 }); 我们可以通过setBrowserAgent方法设置自定义BrowserAgent对象,以观测JavaScript事件及通知等,通过复写onJsMessageShow...方法来接管Web页面弹出Alert对话框的事件,示例代码如下: webview.setBrowserAgent(new BrowserAgent(this) { @Override...str -> { // 处理接收到的JavaScript发送来的消息,本教程通过ToastDialog提示确认收到Web页面发来的消息 new ToastDialog(this).setText

    3.8K20
    领券