UITapGestureRecognizer,用于检测我的屏幕上有哪个UIView被点过。
目标是在WKWebView内包含的网页中调用回调函数. evaluateJavaScript当其参数包含newline字符时断开,这意味着回调函数永远不会被调用. 为什么这是? 当用户按下网页上的按钮时,调用 userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage). func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { let dict = message.body as! [String:AnyObject] let callback = dict["callback"] as! String // Fa
6 2023-06-03
编程技术问答社区
对一个请求使用共享的WKWebViewCookies
我的项目中有几个不同的wkwebviews,它们都通过单个WKProcesspool共享cookie. 现在,我想在REST API上提出一个请求,并且需要将其从该wkwebviews中的cookie完全发送到该API.有办法获得饼干吗?我得到的一切都是NSHTTPCookieStorage中的cookie,但它们似乎与我在WKWebView中使用的cookie并不真正同步.或者甚至有可能也有可能使用WKProcesspool的请求? 解决方案 1)如果您的cookie不仅仅是http--您可以通过评估JavaScript命令document.cookie在webView上获取它们,并将其用于您的请求. 如果它们仅是HTTP,那么似乎没有工作方法可以做到这一点. 据我所知 2)另一种方法(如果cookies属于同一域的rest api属于同一域) - 使用相同的进程池创建"背景" webView,并通过此实例执行所有操作以将API添加到REST API -Cookies将
0 2023-06-02
编程技术问答社区
在WKWebView中加载HTML文本
我使用此代码将我的html文件加载,并在WKWebView中加载文本: do { guard let filePath = Bundle.main.path(forResource: "\(readBookNumber)", ofType: "html") else { print ("File reading error") return } var content = try String(contentsOfFile: filePath, encoding: .utf8) let baseUrl = URL(fileURLWithPath: filePath) content.changeHtmlStyle(font: "Iowan-Old-Style", fontSize: UserDefaults.standard.integer(forKey:
6 2023-05-16
编程技术问答社区
WKWebView Cookies
我正在使用以下提到的方法将cookie设置为WKWebview: 我可以设置cookie wkwebview? 但是,我设置的cookie在Ajax调用中被复制.我的意思是他们被重复两次. 这是我使用的代码段: NSString *strURL = DASHBOARDURL; NSURL *url = [NSURL URLWithString:strURL]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; [request setURL:url]; NSMutableString *script = [[NSMutableString alloc] init]; NSMutableString *cookieString = [[NSMutableString alloc] init]; for (NSHTTPCookie *cookie in [[NSHTTPCooki
6 2023-05-06
编程技术问答社区
如何在Objective-C中检查WkWebView是否加载完毕?
我想使用WKWebView加载HTML页面,并且我想在完成加载后才显示该页面.只要加载,我想在空视图上显示一个活动指示器. 我创建两个视图和一个wkwebview.当页面加载时,我将其添加到VC作为子视图the LoadingView,以及我要删除LoadingView并添加WKWebView之后.这是我的代码: [self addSubview:_loadingView]; _wkWebView = [[WKWebView alloc] initWithFrame:self.frame]; _wkWebView.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, self.frame.size.width, self.frame.size.height); //Send a request to wkUrlconnection NSURL *wkUrl = [NSURL
0 2023-05-04
编程技术问答社区
WKHTTPCookieStore HTTPCookieStorage同步类
用例:我有两个WKWebView,一个在主应用程序中,一个在应用程序扩展程序中.我希望他们共享同一家cookie商店. Apple API有2个不同的cookie存储类:WKHTTPCookieStore和HTTPCookieStorage. 苹果还具有sharedCookieStorage(forGroupContainerIdentifier identifier: String) -> HTTPCookieStorage URLSession s(不是WKWebView),可以在应用程序/构建目标/扩展中使用. 我的计划是将一个WKWebKit cookie转移到共享cookiestorage,然后再次转移到另一个WKWebKit cookie商店. 在我写一篇文章之前,是否有人有一个简单的包装班来参加这些课程,观察它们并保持同步? 或否则会有一种更简单的方法来执行这种看似很常见的用例? 解决方案 这是我组合的.要记住的重要事情: WKW
20 2023-03-31
编程技术问答社区
更新WKWebView的Cookie值
我的要求是将设置为WKWebView的cookie更新.我可以在NSHTTPCookieStorage中更新cookie,但是相同的cookie并未反映到WKWebView cookie(NSHTTPCookieStorage中存在更新值,但未设置为WKWebView) 以下是我用来将cookie设置为ajax调用的代码. NSString *strURL = DASHBOARDURL; NSURL *url = [NSURL URLWithString:strURL]; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; [request setURL:url]; NSMutableString *script = [[NSMutableString alloc] init]; NSMutableString *cookieString = [[NSMutableString alloc
8 2023-03-31
编程技术问答社区
禁用WKWebView中的cookies
在WKWebView中禁用cookie和本地存储吗? 是否有可能禁用cookie和本地存储 假设这是我的设置,我想添加一些禁用它们的东西: import UIKit import WebKit class ViewController: UIViewController, WKUIDelegate { var webView: WKWebView! override func loadView() { let webConfiguration = WKWebViewConfiguration() webView = WKWebView(frame: .zero, configuration: webConfiguration) webView.uiDelegate = self view = webView } override func viewDidLoad() {
24 2023-03-31
编程技术问答社区
在iOS中使用Swift获取Javascript函数响应
我正在尝试使用Swift Platform 来弄清楚如何在iOS应用中实现 JavaScript函数. 我已经尝试了链接中指定的示例代码 https://tetontech.wordpress.com/2014/07/15/swift-to-javascript-and-javascript-and-javascript-to-swift-a-round-trip/ 但我想要以android的方式进行的方式如链接您能帮我. 任何帮助都会深入研究. 解决方案 如果您正在使用WKWebView,则可以使用 调用JavaScript webView.evaluateJavaScript("YourJavaScript",completionHandler : nil ) 对于UIWebView您可以使用 webview.stringByEvaluatingJavascriptFromString : @"YourJavaScript"; 其
2 2023-01-27
编程技术问答社区
从Java脚本调用Swift函数,该函数使用WK WebView返回值
我想从java脚本代码中调用swift函数,该脚本代码返回device id返回脚本,我添加了当前使用的代码.请告知如何从Swift函数中将值返回java script,请提前 代码段: super.viewDidLoad() { self.webView = WKWebView() let preferences = WKPreferences() preferences.javaScriptEnabled = true let configuration = WKWebViewConfiguration() configuration.preferences = preferences configuration.userContentController = contentController configuration.userContentController.addScriptMessage
2 2023-01-27
编程技术问答社区
WKUserScript不工作
我想使用WKWebview api注入脚本.由于某种原因,它不起作用,我无法弄清楚.我已经尝试在Safari开发人员控制台中调试,我也找不到JavaScript代码. 实现代码如下: NSString *js = @"document.body.style.background = \"#FF0000\";"; NSString *myScriptSource = @"alert('Hello, World!')"; WKUserScript *s = [[WKUserScript alloc] initWithSource:myScriptSource injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:YES]; WKUserContentController *c = [[WKUserContentController alloc] init];
4 2023-01-15
编程技术问答社区
捕获窗口。从WKWebView打印()
我正在尝试捕获Window.print()带有我的应用程序的wkwebview的JavaScript调用,以实际显示一个打印对话框,并允许它们从页面上显示的按钮中打印(而不是我的应用程序中的按钮) .有人知道实现这一目标的最佳方法吗? 目前,对我来说,单击一个调用window.print()的链接,只是启动castion PolicyFornAvigationAction委托方法,我找不到任何相关的内容. 解决方案 发布后才发现了(显然)...希望这对其他人有帮助. 创建网络视图... let configuration = WKWebViewConfiguration() let script = WKUserScript(source: "window.print = function() { window.webkit.messageHandlers.print.postMessage('print') }", injectionTime: WKUserS
16 2022-12-10
编程技术问答社区
在WKWebView中操作粘贴内容
我需要操纵粘贴到WKWebView(来自任何来源)的文本,运行可能需要一些时间的异步操作. 我最初的想法是使用JavaScript和WKWebView配置来获取onpaste事件: WKUserContentController *wkUController = [[WKUserContentController alloc] init]; NSString *pasteJSSource = @"document.addEventListener('onpaste', function(){ window.webkit.messageHandlers.ComposerListener.postMessage('onpaste happened!'); })"; WKUserScript *pasteScript = [[WKUserScript alloc] initWithSource:pasteJSSource injectionTime:WKUserScriptIn
20 2022-12-04
编程技术问答社区
WKWebview getAllCookies在iOS 11.3中崩溃
我们最近迁移到WKWebView.我们添加了一个用于Cookie更改的听众,以获取更新的Cookie并更新我们自己的商店. - (void)cookiesDidChangeInCookieStore:(WKHTTPCookieStore *)cookieStore { [cookieStore getAllCookies:^(NSArray* cookies) { }]; } 加载控制器后,它将调用cookiesdidchangeincookiestore,并在" getallcookies"中崩溃.当我直接从XCode(在调试和发布模式下)在设备上直接运行该应用程序时,不会发生.以下是崩溃报告, Thread 9 name: WebThread Thread 9 Crashed: 0 WebKit 0x0000000192fbfc10 WebKit::CallbackMap::put+ 118683
6 2022-12-03
编程技术问答社区
如何删除WKWebview的cookies
现在我像这样做 NSHTTPCookie *cookie; NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage]; for (cookie in [storage cookies]) { [storage deleteCookie:cookie]; } ,但它在iOS 8、64位设备上不起作用. 任何其他方式wkwebview的干净cookie?任何帮助将不胜感激.谢谢. 解决方案 苹果为 iOS 9 发布了新的API,因此现在我们可以删除用于 wkwebview 的特定域cookie,并使用以下代码. Swift 4/5版本: let dataStore = WKWebsiteDataStore.default() dataStore.fetchDataRecords(ofTypes: WKWeb
8 2022-12-02
编程技术问答社区
Ionic 3 响应与状态。0 for URL: null
我有一个离子3应用.我最近添加了iOS平台. 当我在iOS(仿真器和设备)上运行它时,所有带标头的服务器请求失败,而错误" with status:0 for url:null:null" .在Android上,这些请求正常. 如果我执行请求没有标题我会从服务器获得预期响应. 我知道问题是 wkwebview 和 cors .服务器的CORS配置正确.我用@angular/http 模块进行请求. 让我们看看一些代码. 这是我向服务器进行请求的提供商: import { Injectable } from '@angular/core'; import { Content } from 'ionic-angular'; import { Http, Headers, RequestOptions, URLSearchParams } from '@angular/http'; import { HTTP } from '@ionic-native/ht
6 2022-12-01
编程技术问答社区
如何自动缩放WKWebView的内容?
要在 Swift 中一个好的旧 WebView 中自动缩放网页,我所要做的就是: var w:UIWebView w.scalesPageToFit=true 我找不到 WKWebView 的等效方法,并且网页在我的应用程序中显得太大.如何自动缩放 WKWebView 的内容? -我正在使用 Xcode 7 和 Swift 解决方案 这是我的解决方案: extension WKWebView { private struct key { static let scale = unsafeBitCast(Selector("scalesPageToFit"), UnsafePointer.self) } private var sourceOfUserScript: String { return "(function(){\n" + " var head = docum
340 2022-07-17
编程技术问答社区
WKWebview evaluateJavascript不工作,抛出一个错误
我正在尝试从 WKWebview 中的远程站点调用现有函数: function addtext (text) { jQuery("#webviewtest").html(text); } 与: [self.WebView evaluateJavaScript:@"addtext(\"This is a text from app\");" completionHandler:^(id Result, NSError * error) { NSLog(@"Error -> %@", error); }]; 但这会引发错误: Error Domain=WKErrorDomain Code=4 "A JavaScript exception occurred" UserInfo=0x170c788c0 {NSLocalizedDescription=A JavaScript exception occurred} 这太简单了!我一定错过了一些非常愚蠢的东西!
10750 2022-07-17
编程技术问答社区
为什么INSPECT ELEMENT或WEB INSPECTOR或developerExtrasEnabled(WkWebView)在iOS中不工作,而在OSX中却能工作?
这是有助于 WkWebView 中的 INSPECT ELEMENT 的代码片段 preferences.setValue(true, forKey:"developerExtrasEnabled") 这是在 OSX 中运行的 INSPECT ELEMENT 的屏幕截图(右键单击) 右键相当于点击 &保留在 iOS 中 但我无法看到我在 OSX 中看到的任何内容 如果有人想尝试,这里是完整代码 解决方案 在 iOS 中无法做到WKPreference 对于键 developerExtrasEnabled 不键值编码兼容,因此我们无法使用这种方法来做到这一点.
782 2022-07-17
编程技术问答社区
JS在Swift中调用一个函数
我知道如何将消息从 JS 发送到本机 IOS swift 应用程序: func userContentController(userContentController: WKUserContentController!, didReceiveScriptMessage message: WKScriptMessage!) { println("JavaScript is sending a message \(message.body)") } 和 JS: webkit.messageHandlers.callbackHandler.postMessage("Hello from JavaScript"); 我的问题:是否可以直接调用本机应用程序中的函数,而不是在我的示例代码中接收消息. 说我想在 JS 中使用类似的东西: webkit.messageHandlers.someFunctionName() 我问的原因是在 Android 中它是
910 2022-07-17
编程技术问答社区