预加载多个本地webview(代码片段)

您所在的位置:网站首页 wkwebview加载本地图片 预加载多个本地webview(代码片段)

预加载多个本地webview(代码片段)

2023-05-14 23:26| 来源: 网络整理| 查看: 265

关键词:

因为我可以找到一些过时的信息/不能解决我的问题,我决定再次提出这样的问题。 (看到过时/错误的解决方案:)

WKWebView: Is it possible to preload multiple URLs? (Xcode, Swift) Is it possible to load multiple WKWebViews simultaneously if they are on different viewControllers? Swift 3, iOS 10.3 - Preload UIWebView during Launch Screen

我的应用程序分为一个本机部分和一个HTML部分。 HTML将保存为本地文件(index.html),并应加载到myWebView视图中。

@IBOutlet weak var myWebView: UIWebView! func loadWebview() let url = Bundle.main.url(forResource: "index", withExtension: "html") let request = URLRequest(url: url!) myWebView.loadRequest(request) myWebView.scrollView.isScrollEnabled = false myWebView.allowsLinkPreview = false myWebView.delegate = self

因为我的DOM树非常大,所以从本机部分切换到Web部分(在按钮点击时)在第一次切换时需要很长时间 - 因为之后,我确信webView请求被缓存。

To my question:我怎样才能在app init上预加载WebView,以避免从本机切换到Web部分时出现白屏(可能持续0.5秒-1s)?

编辑:

WKWebView显示滚动条而UIWebView不显示!

使用(与UIWebView一样)这种样式:

::-webkit-scrollbar display: none;

没有工作并添加这些行:

webview.scrollView.showsHorizontalScrollIndicator = false webview.scrollView.showsVerticalScrollIndicator = false

也根本不工作。

答案

首先,你应该切换到WKWebView,UIVewView是no longer recommended供Apple使用。

其次,您可以创建一个Web视图池,这些视图会在应用程序启动时被创建并要求加载。这样,当用户切换到Web界面时,Web视图可能有机会完全加载。

为此你可以使用这样的类:

/// Keeps a cache of webviews and starts loading them the first time they are queried class WebViewPreloader var webviews = [URL: WKWebView]() /// Registers a web view for preloading. If an webview for that URL already /// exists, the web view reloads the request /// /// - Parameter url: the URL to preload func preload(url: URL) webview(for: url).load(URLRequest(url: url)) /// Creates or returns an already cached webview for the given URL. /// If the webview doesn't exist, it gets created and asked to load the URL /// /// - Parameter url: the URL to prefecth /// - Returns: a new or existing web view func webview(for url: URL) -> WKWebView if let cachedWebView = webviews[url] return cachedWebView let webview = WKWebView(frame: .zero) webview.load(URLRequest(url: url)) webviews[url] = webview return webview

并要求它在app启动期间有时预加载url:

// extension added for convenience, as we'll use the index url in at least // two places extension Bundle var indexURL: URL return self.url(forResource: "index", withExtension: "html")! webviewPreloader.preload(url: Bundle.main.indexURL)

第三,您可能需要在控制器中使用容器视图而不是实际的Web视图:

@IBOutlet weak var webviewContainer: UIView!

剩下的就是在需要时将预加载的Web视图添加到容器中:

func loadWebview() // retrieve the preloaded web view, add it to the container let webview = webviewPreloader.webview(for: Bundle.main.indexURL) webview.frame = webviewContainer.bounds webview.translatesAutoresizingMaskIntoConstraints = true webview.autoresizingMask = [.flexibleWidth, .flexibleHeight] webviewContainer.addSubview(webview)

而不是最后,请注意保持Web视图的实例可能会带来性能损失 - 内存和CPU。

mui预加载(代码片段)

预加载页面正常打开步骤:先创建->在显示plus.webview.create(url,id,styles,extras);//创建页面plus.webview.show(id_wvobj,aniShow,duration,showedCB,extras);//显示已经创建的或者隐藏的窗口plus.webview.open(url,id,styles,aniShow,duration,sho 查看详情

Microsoft Edge WebView2 控件可以在显示之前预加载页面吗?

】MicrosoftEdgeWebView2控件可以在显示之前预加载页面吗?【英文标题】:CantheMicrosoftEdgeWebView2controlpreloadthepagebeforedisplayingit?【发布时间】:2021-12-1121:39:31【问题描述】:我在我的WPF应用程序中使用MicrosoftEdgeWebView2控件。我的应用... 查看详情

WebView2如何加载本地文件?

】WebView2如何加载本地文件?【英文标题】:WebView2howtoloadlocalfile?【发布时间】:2021-05-0710:22:17【问题描述】:我的WinForm.NETFramework4.7.2中有一个WebView2控件,如何在其中加载我的本地html文件?我试图设置带有file://扩展名的.Source... 查看详情

如何让 Flutter 的 webview 处理从本地 html 加载的本地资产?

】如何让Flutter的webview处理从本地html加载的本地资产?【英文标题】:HowtogetFlutter\'swebviewtoworkwithlocalassetsloadedfromlocalhtml?【发布时间】:2020-06-1321:26:58【问题描述】:我有一个加载css文件、字体和图像文件的html文件。目前我的we... 查看详情

将本地 css 文件加载到 webview 中

】将本地css文件加载到webview中【英文标题】:loadalocalcssfileintoawebview【发布时间】:2015-02-2709:48:43【问题描述】:我构建了一个简单的ios应用程序,它将从服务器下载的html加载到webview中。[self.webViewloadHTMLString:notif.htmlbaseURL:nil];... 查看详情

androidnativeapp开发笔记:使用webview控件加载网页(代码片段)

...导航加载本地网页Web和Native之间交互调试Web应用总结目的WebView是一个比较常用的控件,功能上也比较单一,就是用来加载网页的,可以加载远程的网页,也可以加载本地网页文件。简单来说就相当于一个浏览器。... 查看详情

为啥我不能使用 Webview 加载我的本地页面

】为啥我不能使用Webview加载我的本地页面【英文标题】:Whycan\'tIloadmylocalpageusingWebview为什么我不能使用Webview加载我的本地页面【发布时间】:2012-08-1022:48:16【问题描述】:我是来寻求帮助的,我搜索、阅读并尝试了几种我遇到... 查看详情

如何将 html 文件加载到多个目标的 webView 中

】如何将html文件加载到多个目标的webView中【英文标题】:HowtoloadanhtmlfileintoawebViewformultipletargets【发布时间】:2019-01-0714:41:14【问题描述】:在我的应用程序中,我有一个html信用文件,我想将它加载到webView中。我使用的代码非... 查看详情

多个 WebView 重新加载问题 Flutter

】多个WebView重新加载问题Flutter【英文标题】:MultipleWebViewReloadissueFlutter【发布时间】:2020-02-2518:40:03【问题描述】:我使用了多个带有单独BottomNavigationBarItem选项卡的Web视图,并在每个选项卡中加载了不同的URL。问题是,如果... 查看详情

android中webview的使用详解(代码片段)

前言:通过WebView控件可以实现加载网页的效果。加载URL(网络或者本地assets文件夹下的html文件)加载html代码Native和JavaScript的相互调用一、加载网页的方法:加载网络URLwebView.loadUrl(“https://m.baidu.com”);加载assets目录下的html... 查看详情

WebView2 (WPF) - 从本地文件夹加载网站并调用 C# 函数并调用 JS 函数

】WebView2(WPF)-从本地文件夹加载网站并调用C#函数并调用JS函数【英文标题】:WebView2(WPF)-LoadwebsitefromlocalfolderandcallC#FunctionandcallJSFunction【发布时间】:2021-10-0800:01:00【问题描述】:我正在让WPF应用程序使用WebView2。将有一个安装... 查看详情

android开发基础之控件webview(代码片段)

    WebView可以实现如下功能:加载本地assets文件夹下的html文件wedview.loadUrl(“file:///android_asset/test.html”);加载网络URLwebview.loadUrl(“http://m.baidu.com”);直接加载HTML代码方法一:webview.loadData();方法二:webvi 查看详情

图片的懒加载预加载(代码片段)

原理:    预加载原理:就是在网页全部加载之前,提前加载图片,当用户需要查看时可直接从本地缓存中渲染,以提供给用户更好的体验,减少等待的时间。    图片懒加载原理(缓载):... 查看详情

将本地 web 应用程序包含到 react native webview 中

】将本地web应用程序包含到reactnativewebview中【英文标题】:Includelocalwebappintoreactnativewebview【发布时间】:2016-06-2111:28:47【问题描述】:在我的react-native应用程序中,我想显示一个webview,它加载一个本地html5网络应用程序(单页... 查看详情

android中webview的使用详解

​前言:通过WebView控件可以实现加载网页的效果。加载URL(网络或者本地assets文件夹下的html文件)加载html代码Native和JavaScript的相互调用一、加载网页的方法:加载网络URLwebView.loadUrl(“https://m.baidu.com”);加载assets目录下的html文件w... 查看详情

将 HTML 文件加载到 WebView

】将HTML文件加载到WebView【英文标题】:LoadHTMLfileintoWebView【发布时间】:2011-08-1014:40:10【问题描述】:我有一个本地html页面以及它指向的其他几个资源(css文件和Javascript库),我想将它们加载到WebView中。这怎么可能实现?也... 查看详情

在 swift 3 中启动应用程序时,如何在另一个 ViewController 中预加载 UIWebView?

...t3中启动应用程序时,如何在另一个ViewController中预加载UIWebView?【英文标题】:HowtopreloadaUIWebViewinanotherViewControllerwhenlaunchingtheapplicationinswift3?【发布时间】:2017-11-0219:23:03【问题描述】:我实际上在我的iOS应用程序中使用了两... 查看详情

在 webview 中快速加载 html 文件,更改图像大小、字体和文本大小

】在webview中快速加载html文件,更改图像大小、字体和文本大小【英文标题】:Swiftloadhtmlfileinwebview,changeimagesize,fontandtextsize【发布时间】:2017-08-1708:36:53【问题描述】:谁能帮我在webview中添加html文件?我想用我的文本大小、字... 查看详情



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3