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

在objective-C中从UIWebView迁移到WKWebView后无法加载本地JS文件

在Objective-C中,从UIWebView迁移到WKWebView后无法加载本地JS文件的问题可能是由于WKWebView的安全策略导致的。为了解决这个问题,可以采取以下步骤:

  1. 确保将本地JS文件正确地添加到项目中,并且在目标的"Copy Bundle Resources"中进行了正确的配置。
  2. 确保在加载本地JS文件时使用正确的文件路径。可以使用NSBundle的方法来获取本地文件的路径,例如:
代码语言:txt
复制
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"your_js_file" ofType:@"js"];
  1. 在WKWebView的配置中,设置allowFileAccessFromFileURLs属性为YES,以允许从文件URL加载本地文件。可以使用WKWebViewConfiguration来进行配置,例如:
代码语言:txt
复制
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
configuration.preferences = [[WKPreferences alloc] init];
configuration.preferences.javaScriptEnabled = YES;
configuration.preferences.javaScriptCanOpenWindowsAutomatically = YES;
configuration.allowsInlineMediaPlayback = YES;
configuration.allowsPictureInPictureMediaPlayback = YES;
configuration.allowsAirPlayForMediaPlayback = YES;
configuration.allowsFileAccessFromFileURLs = YES; // 允许从文件URL加载本地文件
  1. 在加载网页之前,使用fileURLWithPath方法将文件路径转换为file URL,然后使用loadFileURL方法加载本地HTML文件。例如:
代码语言:txt
复制
NSURL *fileURL = [NSURL fileURLWithPath:filePath];
[webView loadFileURL:fileURL allowingReadAccessToURL:fileURL];

这样,你就可以在WKWebView中成功加载本地JS文件了。

腾讯云相关产品推荐:

  • 云服务器(CVM):提供可扩展的计算容量,满足各种业务需求。产品介绍链接
  • 云存储(COS):安全可靠的对象存储服务,适用于存储和处理大规模非结构化数据。产品介绍链接
  • 人工智能机器翻译(AI翻译):提供高质量、多语种的机器翻译服务,支持文本、语音和图片翻译。产品介绍链接
  • 云数据库MySQL版(CDB):高性能、可扩展的关系型数据库服务,适用于各种规模的应用程序。产品介绍链接
  • 云原生容器服务(TKE):基于Kubernetes的容器管理服务,提供高可用、弹性伸缩的容器集群。产品介绍链接

请注意,以上推荐的产品仅代表腾讯云的一部分产品,更多产品和详细信息请参考腾讯云官方网站。

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

相关·内容

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

它是iOS7开始加入的,用 Objective-C 把 WebKit 的 JavaScript 引擎封装了一下,提供了简单快捷的方式与JavaScript交互。...2、代码操作展示 因为该系列主要是JS与OC互调,所以主要介绍如何用JavaScriptCore实现JS与OC互调。 2.1 创建UIWebView,并加载本地HTML。...2.2 添加JS要调用的原生OC方法。 HMTL加载成功的回调方法- (void)webViewDidFinishLoad:(UIWebView *)webView添加要调用的原生OC方法。...要调用的原生OC方法,可以viewDidLoad webView被创建就添加好,但最好是在网址加载成功再添加,以避免无法预料的乱入Bug。...WKWebView如何实现OC与JS交互可以看前面这篇文章:iOS下JS与OC互相调用(三)--MessageHandler UIWebView利用JavaScriptCore来实现交互的示例工程:JS_OC_JavaScriptCore

2.8K10
  • 网易严选的wkwebview测试之路

    不过苹果在iOS8以后推出了WKWebView加载Web。UIWebView自iOS2就有,WKWebViewiOS8才有,毫无疑问WKWebView是将会逐步取代笨重的UIWebView。...且UIWebView存在占用过多内存,js执行效率低等问题。而WKWebView网页加载速度大有提升,占用更少内存。   ...从上图可以看出,app进行登录,福利社的webview并没有同步获取相应的登录态,究其原因,主要原因是:WKWebView Cookie 问题在于 WKWebView 发起的请求不会自动带上存储于...),但是替换了wkwebview之后,无网络状态下本地的html网页无法加载,结果: ?   ...最后,WKWebView相较于UIWebView整体上有较大的提升,满足OS上面使用同一套控件的功能,同时对整个内存的开销以及滚动刷新率和JS交互做了优化的处理。

    1.7K10

    【iOS开发】 UIWebViewWKWebView

    ③为什么现在是时候 UIWebView移到 WKWebView 了: 截止到我写这篇文章的时候,据 mixpanel 的数据,iOS 9 占有率已达 58.55%,iOS 8 占有率达到了 34.78%...正文 常用代理方法 WKWebView ,UIWebViewDelegate 与 UIWebView 被重构成了14类与3个协议,下面给出一些 UIWebView 中常用的方法的 WKWebView...JS交互 UIWebView ,一句简单的webView.stringByEvaluatingJavaScriptFromString() 就可以用 JS 脚本操纵 WebView, WKWebView...下面的示例代码用于 WKWebView 获取网页的文本。..., forMainFrameOnly: true) // 这里的 AtDocumentEnd 字段是指网页的内容加载完毕再插入 JS 脚本,你也可以选择 AtDocumentStart, document

    1.8K20

    UI篇- UIWebView使用大全

    fileURLWithPath:path]]]; //加载本地文件 //第二种方法: NSString *resourcePath = [[NSBundle mainBundle] resourcePath...OC调用JS方法 与UIWebView进行交互,调用web页面的需要传参的函数时,参数需要带单引号,或者双引号(双引号需要进行转义转义字符前加\),传递json字符串时不需要加单引号或双引号:...有两种方式可根据加载内容 获取UIWebView的合适高度,但都需要在网页内容加载完成才可以,即需要在webViewDidFinishLoad回调中使用。...JS传参数,如何在OC获取到JS传递过来的参数 如果要实现这样的JS和OC的数据交互,需要使用到一个第三方文件:WebViewJavascriptBridge 给web发消息 @property WebViewJavascriptBridge...UIWebView iOS11的使用。 ? UIWebView iOS 11上 当顶部的 y值设为 0 时,是依然无法盖住UIStatusBar区域的,但是滚动时就会出现问题了。

    1.9K10

    http:blog.csdn.netu010105969articledetails53541088

    本文链接:https://blog.csdn.net/u010105969/article/details/101682356 iOS开发WKWebViewJS的交互 之前已经写过一个篇OC与JS...WKWebView,此控件也能用来显示网页,可与JS的交互却与UIWebView有所不同。...注意:利用UIWebView展示网页的时候我们如果要想与JS进行交互那么我们就得获取JS代码的方法名,而我们使用WKWebView的时候就不用了。...当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。...导入 如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入, 继续你的创作。 ---- mermaid语法说明 ↩︎ 注脚的解释 ↩︎

    1.6K30

    Hybrid App 应用 开发 9 个必备知识点复习(WebView 调试 等)

    不过苹果在 iOS8 以后推出了 WKWebView加载 Web,并应用于 iOS 和 OSX ,它取代了 UIWebView 和 WebView ,两个平台上支持同一套 API。...库加载并使用, UIWebView 限制了; WKWebView 目前缺少关于页码相关的 API; WKWebView 提供加载网页进度的属性; WKWebView 使用 Safari 相同的 JavaScript...; WKWebView 无法发送 POST 参数问题; WKWebView 可以和js直接互调函数,不像 UIWebView 需要第三方库 WebViewJavascriptBridge 来协助处理和...js 的交互; 注意: 大多数App需要支持 iOS7 以上的版本,而 WKWebView iOS8 才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView ,iOS8 后用...WKWebView 页面样式问题 WKWebView 适配过程,我们发现部分 H5 页面元素位置向下偏移或被拉伸变形,追踪发现主要是 H5 页面高度值异常导致。

    3.1K00

    小白必看,JSBridge 初探

    JSBridge 主要提供了 JS 调用 Native 代码的能力,实现原生功能如查看本地相册、打开摄像头、指纹支付等。...WKWebview 提供了 window.webkit.messageHandlers 方法,支持 iOS 8.0 及以上系统。UIWebview 几年前常用,目前已不常见。...Android 主要有两种方式实现。 4.4 以前,通过 loadUrl 方法,执行一段 JS 代码来实现。 4.4 以后,可以使用 evaluateJavascript 方法实现。...= nil) // javaScriptString 需要调用的 JS 代码 // completionHandler 执行的回调 // objective-c [jsContext evaluateJavaScript...:@"ZcyJsBridge(ev, data)"] JSBridge 的使用 如何引用 由 H5 引用 我司移动端初期版本时采用的是该方式,采用本地引入 npm 包的方式进行调用。

    1.5K10

    【Hybrid】288- Hybrid App 应用开发 9 个必备知识点复习

    不过苹果在 iOS8 以后推出了 WKWebView加载 Web,并应用于 iOS 和 OSX ,它取代了 UIWebView 和 WebView ,两个平台上支持同一套 API。...无法发送 POST 参数问题; WKWebView 可以和js直接互调函数,不像 UIWebView 需要第三方库 WebViewJavascriptBridge 来协助处理和 js 的交互; 注意...: 大多数App需要支持 iOS7 以上的版本,而 WKWebView iOS8 才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8 后用 WKWebView...WKWebView 页面样式问题 WKWebView 适配过程,我们发现部分 H5 页面元素位置向下偏移或被拉伸变形,追踪发现主要是 H5 页面高度值异常导致。...Fiddler 或 Charles 的主要作用有: 可以代理请求,用来查看页面发送的请求和接收的响应; 可以修改请求的响应,用来模拟自己想要的数据; 可以模拟网络请求的速度; 可以代理服务器的静态资源请求,指向本地文件

    2.3K20

    Hybrid App 应用开发 9 个必备知识点复习

    不过苹果在 iOS8 以后推出了 WKWebView加载 Web,并应用于 iOS 和 OSX ,它取代了 UIWebView 和 WebView ,两个平台上支持同一套 API。...UIWebView 限制了; WKWebView 目前缺少关于页码相关的 API; WKWebView 提供加载网页进度的属性; WKWebView 使用 Safari 相同的 JavaScript...; WKWebView 无法发送 POST 参数问题; WKWebView 可以和js直接互调函数,不像 UIWebView 需要第三方库 WebViewJavascriptBridge 来协助处理和...js 的交互; 注意: 大多数App需要支持 iOS7 以上的版本,而 WKWebView iOS8 才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8...或 Charles 的主要作用有: 可以代理请求,用来查看页面发送的请求和接收的响应; 可以修改请求的响应,用来模拟自己想要的数据; 可以模拟网络请求的速度; 可以代理服务器的静态资源请求,指向本地文件

    2.7K20

    Hybrid App 应用开发 9 个必备知识点复习

    不过苹果在 iOS8 以后推出了 WKWebView加载 Web,并应用于 iOS 和 OSX ,它取代了 UIWebView 和 WebView ,两个平台上支持同一套 API。...无法发送 POST 参数问题; WKWebView 可以和js直接互调函数,不像 UIWebView 需要第三方库 WebViewJavascriptBridge 来协助处理和 js 的交互; 注意...: 大多数App需要支持 iOS7 以上的版本,而 WKWebView iOS8 才能用,所以需要一个兼容性方案,既 iOS7 下用 UIWebView , iOS8 后用 WKWebView...WKWebView 页面样式问题 WKWebView 适配过程,我们发现部分 H5 页面元素位置向下偏移或被拉伸变形,追踪发现主要是 H5 页面高度值异常导致。...Fiddler 或 Charles 的主要作用有: 可以代理请求,用来查看页面发送的请求和接收的响应; 可以修改请求的响应,用来模拟自己想要的数据; 可以模拟网络请求的速度; 可以代理服务器的静态资源请求,指向本地文件

    2.3K30

    H5秒开技术选型

    通过获取沙盒H5路径直接加载描述:通过获取沙盒H5路径直接加载 将h5文件存入沙盒,webview加载本地文件URL 。...基于NSURLProtocol进行请求拦截,实现预加载描述:UIWebView上,创建个子类,子类里面实现protocol的代理方法即可实现对所有请求的拦截。...拦截对css、js、img等资源加载的请求。优点:UIWebView原生支持缺点:WKWebView网络请求独立于主进程,NSURLProtocol无法拦截。...8.今日头条方案:内置文章详情页所需的css、js文件,并可以控制版本,预创建WebView预创建预加载包含文章详情页所需的css、js的空html列表页预加载文章详情所需的内容使用LRU内存缓存并保存到本地数据库文章详情页获取预创建的...WebView(预加载了html),直接调用js设置页面内容通过js控制图片的显示,图片懒加载(当图片在可见区域或即将可见才会加载图片),点击加载图片等 Html的图片通过ContentProvider

    1.1K40

    WKWebView 那些坑

    导语 WKWebView 是苹果在 WWDC 2014 上推出的新一代 webView 组件,用以替代 UIKit 笨重难用、内存泄漏的 UIWebView。...不过 WKWebView WKProcessPool 实例 app 杀进程重启后会被重置,导致 WKProcessPool 的 Cookie、session Cookie 数据丢失,目前也无法实现...并使用 NSURLConnection 加载 request3,最后通过 NSURLProtocolClient 将加载结果返回 WKWebView; 5、WKWebView 页面样式问题 WKWebView...无奈之下,我们只能约定一个JS接口,让游戏开发商实现该接口,具体是通过 canvas getImageData()方法取得图片数据返回 base64 格式的数据,客户端需要截图的时候,调用这个JS接口获取...8.2、goBack API问题 WKWebView 上调用 -[WKWebView goBack], 回退到上一个页面不会触发window.onload()函数、不会执行JS

    4.5K130

    WKWebView 那些坑

    不过WKWebView WKProcessPool实例app杀进程重启后会被重置,导致WKProcessPool的Cookie、session Cookie数据丢失,目前也无法实现WKProcessPool...实例本地化保存。...并通过NSURLConnection加载request3,最后将加载结果返回WKWebView; 5、WKWebView 页面样式问题 WKWebView适配过程,我们发现部分H5页面元素位置向下偏移或被拉伸变形...无奈之下,我们只能约定一个JS接口,让游戏开发商实现该接口,具体是通过canvas getImageData()方法取得图片数据返回base64格式的数据,客户端需要截图的时候,调用这个JS接口获取...8.2、goBack API问题 WKWebView上调用 -[WKWebView goBack], 回退到上一个页面不会触发window.onload()函数、不会执行JS

    17.2K21
    领券