草庐IT

探秘WKWebView

全部标签

ios - WKWebView 和 UIMenuController

我有一个带有WKWebView的应用程序。在此应用程序中,我自定义了UIMenuController中显示的选项。无论我做什么,WebView似乎都会向菜单添加复制和定义选项。如果我将自己设置为第一响应者并为所有内容返回NO,我仍然会获得复制和定义选项。我已经实现了我自己的复制选项,它根据用户偏好和确切选择的内容执行特殊操作。有没有办法删除这些额外的选项?更新:我已将其归档为雷达18487289。 最佳答案 对于iOS11,只需继承WKWebView并覆盖canPerformAction以返回false:classWebView:W

ios - 进入后台时暂停WKWebView?

是否有推荐的方法在进入后台时暂停或停用我的WKWebView?我在WebView中呈现复杂的JavaScript图表,不希望它们在后台泄漏内存。处理此问题的最佳方法是什么?然后我必须重新初始化整个WKWebView还是只重新初始化JavaScript?感谢您的帮助或指导。 最佳答案 根据我的经验,进入后台时不需要做一些特定的工作,因为所有重量级的工作都发生在web-process中,WKWebView只是用于渲染。但是,网络进程可能会因内存压力而关闭;您需要通过实现WKUIDelegate的方法来处理它并恢复状态:-(void)we

ios - 上传功能在 safari 中有效,但在移动 wkWebView ios 应用程序中无效

我的网站附有一个文件上传系统,它在移动safari上运行完美。我可以访问iCloud、PhotoLibraray和相机。然而,在我将它实现到我们的移动应用程序的wkWebView中后,上传系统不再有效。当我加载wkWebView并单击按钮时,它会显示我要从中获取文件的选项。我选择PhotoLibrary,它关闭了webview并带我回到我的第一个viewController。这是网页View代码://CameraAVCaptureDevice.requestAccess(forMediaType:AVMediaTypeVideo){responseinifresponse{//acce

ios - UIWebview 或 WKWebview

在我的应用程序中,我想打开一个网站。早些时候我在Swift3.0中使用了UIWebview并且一切都很好。但是当我读到WKWebview应该现在使用时,使用WKWebview网站不会显示在应用程序中。我很困惑,网站使用UIWebview而不是WKWebview的原因可能是什么。我尝试了其他几个网站,它们在UIWebview和WKWebview上都运行良好。有人可以建议这里可能是什么问题吗。另外,如果我使用UIWebView,我的应用会被拒绝吗?下面是我正在使用的来自Apple的示例代码。importUIKitimportWebKitclassViewController:UIViewC

ios - 如何将嵌入的 youtube 视频禁用自动播放到 WKWebView

我想为WebKitView中的嵌入式YouTube视频禁用自动播放。当我第一次打开View时,视频最初不会播放,但如果我在我的导航Controller中切换到另一个View,然后切换回该View,如果之前已启动,视频将开始全屏播放。overridefuncviewDidLoad(){super.viewDidLoad()letyoutubeURL=URL(string:"https://www.youtube.com/embed/KUh2O8HylUM")letrequest=URLRequest(url:youtubeURL!)videoPlayer.load(request)//D

javascript - 如何在 swift 4 的 WKWebView 中从网页中删除 DIV 标签?

在swift4中将网页加载到WKWebVIew时,我想从我的网页中删除页眉和页脚div标签。我尝试了以下代码。但它不工作..给我解决方案!classViewController:UIViewController{@IBOutletvarwebView:WKWebView!overridefuncviewDidLoad(){super.viewDidLoad()varurl:URL?url=URL(string:"https://www.walkmate.co.in")letrequest=URLRequest(url:url!)webView.load(request)letscrip

swift - 多个 WKWebView 实例的独立 webView didFinish WKNavigationDelegate 方法

有没有办法在不同的webView完成加载时发生不同的操作?如果我有webView1和webView2,我如何创建两个独立的webView(_webView:WKWebView,didFinishnavigation:WKNavigation!)函数,得到单独调用其中一个webViews完成加载? 最佳答案 WKNavigationDelegate或任何协议(protocol)的方法每个类只能继承一次,但您可以轻松找出从哪个实例调用委托(delegate)方法,如下所示:classYourClass:WKNavigationDeleg

ios - WKWebView 自定义 URL 方案不适用于 https? (混合内容被屏蔽)

我有一个WKWebView来加载一个网站,该网站具有使用WKURLScheme实现的自定义url方案(mycustomurl://),网站将使用GET调用该方案。当网站位于http://时一切正常,但当我切换到https://时出现以下错误并中断:[blocked]Thepageathttps://(urlsnipped)wasnotallowedtodisplayinsecurecontentfrommycustomurl://(urlsnipped).WKURLScheme回调从未被触发,所以我怀疑Safari或更强大的功能阻止了它:/我已经梳理了关于ATS的SO讨论,但没有一个有

ios - WKWebView 从 Bundle 和 Document 目录加载文件

我正在运行一个使用WKWebView的网络应用程序,它从名为Web_Assets的Bundle目录加载内容和Assets(html、js、img、css...)。我这样加载index.html,并将Web_assets设置为baseURL:ifletfilePath=Bundle.main.path(forResource:"index",ofType:"html",inDirectory:"Web_Assets"){lethtml=tryString(contentsOfFile:filePath,encoding:.utf8)webView.loadHTMLString(html,

javascript - WKWebView是否可以关闭位置权限?

我想知道是否可以阻止WKWebView显示位置权限提示?(“website.com”想使用您的当前位置)我相信它正在显示,因为该网站包含谷歌地图。我对在其他SO问题中显示的位置预加载位置不感兴趣。我只是不想在WKWebView中使用位置。有没有办法阻止位置权限提示出现?我已尝试注入(inject)以下javascript,但它不起作用。letcontentController=WKUserContentController()letscriptSource="navigator.geolocation.getCurrentPosition=function(success,error,