file-type

OC与WKWebView中OC向JavaScript通讯详解

ZIP文件

下载需积分: 2 | 5.31MB | 更新于2024-12-24 | 195 浏览量 | 0 下载量 举报 收藏
download 立即下载
知识点: 1. OC (Objective-C) 概述: Objective-C 是一种编程语言,广泛用于苹果的macOS和iOS平台的应用程序开发。它是一种面向对象的编程语言,继承了C语言的特性,并增加了Smalltalk风格的消息传递机制。在iOS开发中,Objective-C是Apple推荐的语言之一,尽管近年来Swift逐渐成为主流开发语言,但Objective-C由于其广泛的兼容性和成熟的库支持仍然占有重要的地位。 2. WKWebView介绍: WKWebView是iOS 8及以后版本中引入的一个新的Web视图组件,用于替代老旧的UIWebView。它提供了更快的页面渲染速度和更好的性能,支持现代Web标准,并允许JavaScript与原生代码之间进行更高效的交互。使用WKWebView可以嵌入网页内容到iOS应用中,同时提供了丰富的API来控制网页加载、交互和安全性。 3. OC与JS交互的方式: Objective-C 与 JavaScript 之间的交互是通过WKWebView提供的JavaScriptCore框架实现的。JavaScriptCore是苹果提供的一个JavaScript引擎,它允许JavaScript代码与Objective-C代码在同一个进程中进行交互。开发者可以在Objective-C代码中注入JavaScript代码,并在JavaScript代码中调用Objective-C代码中定义的函数。这种交互方式为iOS应用开发提供了灵活性,可以动态地执行网页内的脚本,或者从网页中获取数据。 4. OC调用JS代码: 在Objective-C中调用JavaScript代码,可以通过WKWebView的`stringByEvaluatingJavaScript(from:)`方法实现。这个方法接受一个Objective-C的字符串参数,该字符串包含了要执行的JavaScript代码。例如: ```objective-c NSString *jsCode = @"document.title"; NSString *result = [webView stringByEvaluatingJavaScriptFromString:jsCode]; ``` 这段代码将会获取当前网页的标题,并将其保存在Objective-C的变量`result`中。 5. JS调用OC代码: 要让JavaScript调用Objective-C代码,需要在WKWebView初始化后设置一个用户脚本注入。使用`WKUserContentController`可以添加自定义的JavaScript代码到WKWebView中,然后在Objective-C中定义一个方法,该方法可以被注入的JavaScript代码调用。例如: ```objective-c NSString *javaScriptFunction = @"function injectedFunction() { return 'Hello from Objective-C'; }"; WKUserContentController *userContentController = [WKUserContentController new]; [userContentController addUserScript:[WKUserScript script注入的JavaScript函数字符串 language:WKUserScriptLanguageJavaScript sourceType:WKUserScriptSourceInjectionAtDocumentEnd forMainFrameOnly:NO]]; [webView.configuration.userContentController addController:userContentController]; ``` 接着,在Objective-C中定义一个可以被JavaScript调用的方法: ```objective-c - (void)injectedJavaScriptFunction { NSLog(@"This is Objective-C method called by JavaScript!"); } ``` 然后在JavaScript代码中调用这个Objective-C方法: ```javascript injectedFunction(); // 调用Objective-C中定义的方法 ``` 6. WKWebView的性能优化: 为了优化WKWebView的性能,开发者可以采取多种策略,比如减少不必要的DOM操作、使用懒加载来按需加载资源、合理地使用缓存以及在应用的后台处理任务时降低WKWebView的优先级等。此外,还可以通过配置WKWebView的配置选项来控制其行为,比如设置网络超时时间、缓存策略等。 7. 安全性和权限问题: 在进行Objective-C与JavaScript的交互时,安全性和权限管理是非常重要的。开发者需要确保注入的JavaScript代码不会对应用造成安全威胁,比如防止JavaScript注入攻击。此外,由于JavaScript可以访问并修改网页DOM,开发者需要对Objective-C代码暴露给JavaScript的接口进行严格的权限控制,避免敏感数据泄露或应用逻辑被篡改。 通过以上知识点,我们可以了解到Objective-C与JavaScript在WKWebView中交互的基本机制,以及如何安全有效地在iOS应用中利用这种交互方式来增强应用的功能和用户体验。

相关推荐

冯汉栩
  • 粉丝: 491
上传资源 快速赚钱

资源目录

OC与WKWebView中OC向JavaScript通讯详解
(1201个子文件)
b8dd848a91e0307a19b1168d3beade728222cf 1KB
c5cc3baea1230c142607a04ad28c4618c1fe92 2KB
6bdd8f3697f0d10077194aad1fbd613505ab68 734KB
5e9329f3767a7c1dd66294b8025bf81dee7d2c 781B
d59d14c92627718d7a1c6719ff0a780c4c75c0 138KB
9519c7d3b11f0538f223c2c23432afbc13f62f 95B
47ca71180f92d32db4b4583155406835753b6f 170B
a7a60678aefd3304a5c80a95baa3868d4eb5cd 153B
94c9846cdbe0e73a44bebdf09a408adff74ba7 105B
c66c23b4ff7fa692fbf8657df19d5e36dec8af 173B
b284000932252574bd91ab3eb27c1db78256c5 116B
539543a5ac9b3b01fc5588361349c010e5a62e 154B
4e7c7aba17acb92ed3c80fd41e1a6db5b18486 3KB
74dbe1619f450db10fb5b2e9ccefa40f0e5213 217B
262041f89cc8c2dd232a694110aa9e5df6b6b5 125B
7a5e252a07430bb27b4a214c0684caef418f7a 581B
2ea7b8a61aca7fa0141e3f69e0cb278a59294e 122B
54f666612d47a4c9279c25e207d367f1d69132 1KB
bf2c4f5985f3b78688a66b623cbae312972186 730B
b3d0b95b154ff181f7e2d5306cae8065d006d3 234KB
d981003d68d0546c4804ac2ff47dd97c6e7921 206B
2ba33ab37d96945a2f61f7989f3a191fc82078 234B
2c1567d401207a3c110e89455d595432226f98 152B
a7edf051515125eeb52479ad73de33e58aa476 51B
07cf530c5cdb0dc956326963af4daeb0fe759e 154B
2de9d6f8391386cf7c689df52e67d90fab716a 4KB
cbb9367a41f9439b51854ec9b0eed8081ea47f 174B
41d71179ada826a0e745083d7eac30c8fc856d 168B
1ecf354849bbc192da9813a1e310d763cd9355 90B
1f61b1aa89ff271381a802bb27fdadb86402c0 153B
876c239b181d74aa1ddc8c4168fdbd8a746713 169B
01900d2f2d00b3715847934daa0177ed5f8ccc 4KB
8789700816459c1e1480e0b34781d9fb78a1ca 105B
717c6437c064e4f814bf285543de2683ef3769 909B
6bd324c26d854187559f27f8194c8afd1795ac 58B
9d9e0bb80fbc4bd1d2015902dce95fdf2f3c3b 63B
5eb06437a5287e7542e33b10bf72cc842e6960 3KB
0b0b6ef0301edb86970cec81b9fe59f75ce55d 4KB
3afe65819e366873bdf1e14479a434d509001d 154B
43bdfd017538342681e27206e3e1271ffca89c 4KB
3cc9b8ba4e4ae5c6df5ed5e3f199668b7fead0 68B
5fc84975a02f2ee494ea8252f09e082c03b735 132B
4611e7d73d2398633b1d76a32327fcaf3152df 136B
459560e140038bd17c72016dccdf40a08c20b5 130B
acf80914c81f2d9f413fb6ca93a54d07651fbb 398B
5afbccc7610c121ed9a47e4b712f139d821ea3 121B
4dd69b20800d4fa53482d68b797f637fb0e948 2KB
COMMIT_EDITMSG 15B
5b9957b119cadbdfb71b1ebb01b0da14711f30 162B
9691745226bba0a5df75b359a36ad93cc85ff1 619B
71f7ca93b6ecb459562d27ffce61b9e340e14c 140B
9434a6254f0e9651f402737811be6634a03e9c 117B
701f5c3be2ef814f771a9348a4d17857a5fa06 378B
c312e4b10f4af2daf40e915b8de77b4bedf961 138B
93013da8ced011e741b7cfb8d83e0cd3ff7764 136B
2cb5d6d09fe5019d2f930632eaa15b4e51aedc 104B
405478621a17b86a9a826af022937428c87b31 246B
config 137B
0e0df1c12adfffb2b35dfc2fdc0a97cf3d3192 120B
478c3b9b944a257b760d4c7609ace7703d43d5 404B
912b8ccab351c787d4a4af3c4678d7a7ea549a 143B
cf034192813cdc08e8cea8fc55b54feda3d433 158KB
1daa9d7bd97c51a5fb20b1b914d2253ce29797 277B
0d07017f2d3ddca1281e6c5c9ac8e30ec7325f 132B
568d494c511e3ab2248eb5a7a5d338a9f224ef 154B
58062e59fa21dc781752294c9d64ae45134455 188B
b954f3648fb02994643de1a46f5751b0dab7c7 3KB
53584a4e8b66e981a828a4e0cfb0a2a62abaa2 168B
27c827268d0746973e4e95c1f780ba1cde5190 111B
87ab327de9d341403ac26c756b83513cfdf5d6 117B
bbf22c6a7ca1cd730055bd2cbcdc79d6491d9a 1KB
767992085385cf02ea99b3586c5daef29f32d3 166B
6e56bcae681e4f56156e51a4c69b98f313d9e7 202KB
994965510b8570087cb44911efc6736f7844b7 166B
c00596a7fca3f3d4bdd64053b69d86745f9e10 66B
2858074d19a14b4122743ca3fe058199ef4d09 153B
6f8abf2fde5c97c21f2288e88aa63c60754e9c 106B
216a1fd694632826098df1a78e80e4a1fd904e 1KB
a6ed16fd6ffaeda2272e1f6766811690b51f7c 67B
60f2238b2230161e5bce71248926a73c26c571 124B
d65ca495770bdc9600e58687865b73a36bed3a 361B
0e9dca099bacf6f1a47fe48ab35b77329d7f48 93B
7b84455fd438c0a87de6d4a230c3491ad680d5 2KB
185ab4d4a7da827d90f21e665bc9b36bca6dd3 155B
553cf50cd6c5625d4afd4d3b9c8e205a35bf37 124B
ac20423d7fdfa620a98aac1fe02bd4e6390354 231B
60bda28e39b35613fd6edc1541091a7358b2f9 709B
6c758e3ed791c574deffa34221318e06c33d8d 302KB
c8b620e3ab213298b677fe6564f54e86be4c53 58B
8a21ce779bae61839ac1803bc4e2c854578f5e 747B
ad120958fdaba82d6a33fc6e42b16d2e153f82 155B
626326d414d38c4908aaf0f05db3c68f7f0e88 230B
0cd074629963784d23bffaaa5776a6763ebe0f 1KB
21b9bb1a35f5de270a41afa01305478221ae32 253B
ae55a30b2310886872f3781f09c6f64d56970c 160B
126a701671f78dcbe431ce59df7a66624b915b 4KB
2166cdc50330e8291730a77608c718561aea42 341B
03d1fb73497a0ea9aca10e58adacb893a1e220 826B
67538897d92ca9678e66e559caf6efa4e41c56 289B
c8dada9486a38f7597aaf6b9d7baf15bc331fb 117B
共 1201 条
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 13