本文介绍的是在 初始化 webView 就 注入 js 文件 ,然后再 加载每个地址的时候 都能调用这个JS文件里的方法
准备 Abc.js 放到跟目录
if (!this.__testjs__) { __testjs__ = {}; } __testjs__.Class1 = { hideLogo: function (str) { //logo 将消失 var element = document.getElementById("logo") element.innerHTML = str return document.title }, };
目录位置
然后是swift 文件
override func viewDidLoad() { super.viewDidLoad() let webView = WKWebView(frame: CGRect(x: 0, y: 50, width: screenWidth, height: screenHeight-50)) //初始化WebView 时将JS注入webView if let path = Bundle.main.path(forResource: "Abc", ofType: "js") { let source = NSString(data: NSData(contentsOfFile: path) as! Data, encoding: UInt(String.Encoding.utf8.hashValue)); let userScript = WKUserScript(source: source as! String, injectionTime: WKUserScriptInjectionTime.atDocumentStart, forMainFrameOnly: false) webView.configuration.userContentController.addUserScript(userScript) } self.view.addSubview(webView) let url:String = "http://m.baidu.com" webView.load(NSURLRequest(url: NSURL(string: url) as! URL) as URLRequest); // 3.5 秒后执行 JS 代码 ,一般情况都是 在webView 加载完成后才执行 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3.5){ webView.evaluateJavaScript("__testjs__.Class1.hideLogo('sddd')") { (response, error) in if error != nil { print(" error: ") } else { print(response as! String) } } } }
效果就是 打开m.baidu.com 后一会, logo 消失 并显示 sdd
相关推荐
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if navigationAction.request.url?.isFileURL ?...
在iOS应用开发中,Swift语言提供了WKWebView组件,它是苹果推荐用来替代UIWebView的现代Web内容展示工具。WKWebView不仅性能更优,还支持最新的Web标准和技术,如HTML5、CSS3和JavaScript。本篇文章将深入讲解如何...
在Swift文件顶部添加`import WebKit`,然后可以创建WKWebView实例。 2. **初始化WKWebView** WKWebView可以通过`init(frame: CGRect, configuration: WKWebViewConfiguration)`构造函数创建。你需要指定一个frame...
- **交互**:WKWebView提供了`WKUserContentController`,用于JavaScript和Objective-C/Swift之间的通信,实现网页内容与原生代码的交互。 5. **浏览进度条** 在使用WKWebView时,可以监听`WKNavigation`代理方法...
4. **JavaScript 交互**:WKWebView 支持与JavaScript进行通信,通过`WKUserContentController`可以注册JavaScript回调,当JavaScript执行特定函数时,Swift端会收到通知并执行相应的处理。 5. **注入CSS/...
然后,我们需要在WKWebView中注入这段JavaScript代码,并监听其执行结果。为此,我们可以利用WKWebView的WKUserContentController和WKScriptMessageHandler。创建一个WKUserContentController实例,并添加一个用户...
8. **使用示例**: 创建一个Swift函数,比如`callFromJS(name: String) -> Void`,然后在JavaScript中调用`window.SFWebViewBridge.call("callFromJS", {"name": "John Doe"})`。这样,当你在JavaScript中调用这个...
开发者可以使用`WKUserContentController`来设置JavaScript接口,并通过`WKWebView`的`evaluateJavaScript:`方法执行JavaScript代码,同时也能监听JavaScript的回调,以便在Swift中处理结果。 创建一个`WKWebView`...
Swift开发中的一个关键挑战是实现本地代码与Webview中运行的JavaScript之间的通信。这个"swift-本地iOSObj-C和AndroidJava到WebviewJavaScript桥接器"项目提供了一个解决方案,允许在不同的上下文中交换数据,从而...
4. 设置消息传递:在WKWebView加载网页之前,设置WebviewJavaScriptBridge的初始化脚本,以便在JavaScript环境中注入相应的对象和方法。 ```swift let userScript = WKUserScript(source: "window....
Swift中的`WebViewJavascriptBridge`是一个强大的工具,它允许Objective-C和JavaScript之间进行无缝通信,使得在iOS和OSX应用中的`UIWebView`或`WKWebView`可以与网页内容交互。这个框架极大地拓展了原生应用的功能...
3. **Swift端的集成**: 如果你需要在Swift代码中与React Native的WebView组件进行交互,例如处理URL的改变或注入JavaScript代码,你需要创建一个桥接头文件(`ProjectName-Bridging-Header.h`)并在其中导入React ...
WKWebView是苹果提供的一个强大的组件,它不仅能够加载和显示网页,还允许我们在Swift代码中注入JavaScript代码或执行已有的JavaScript函数。具体步骤如下: 1. 创建WKWebView实例:首先,我们需要在Swift项目中...
WKWebView不仅支持网页内容的加载,还允许开发者通过JavaScript与Objective-C或Swift代码进行通信,实现更丰富的功能。 **二、WKWebView的初始化** 在iOS应用中使用WKWebView,首先需要创建一个WKWebView实例。这...
对于这些问题,开发者需要深入理解`WKWebView`的工作原理,熟练掌握Swift与JavaScript的通信机制,以及适当运用Objective-C的桥接来调用遗留的OC代码库。通过不断的实践和优化,可以确保WebView与原生代码的交互既...
1. **WKUserContentController**:这是一个用于管理JavaScript内容和用户脚本的类,可以通过它来设置JavaScript代码并将其注入到WKWebView中。 ```swift let userContentController = WKUserContentController() ...
在iOS开发中,文件操作和WKWebView的使用是两个重要的技术点。文件操作涉及数据的存储、读取和管理,而WKWebView则用于在应用程序中展示网页内容,这两个概念对于构建功能丰富的移动应用至关重要。 首先,我们来...
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if let url = navigationAction.request.url { ...
5. **HTML处理**:可能使用WKWebView或SFSafariViewController来加载和展示HTML内容,同时可能需要理解如何与HTML进行交互,如注入JavaScript或监听DOM事件。 6. **事件处理和用户界面**:理解如何响应用户在iPad或...
它提供了一个执行JavaScript代码的环境,并且允许原生代码(Objective-C/Swift)调用JavaScript函数或访问JavaScript对象。 - **特点**:高性能、易于集成。 #### 二、JS与iOS交互技术点详解 **2.1 JSCore在iOS中...