是否可以使用WKWebView在JavaScript和Swift/Obj-C原生代码之间进行同步通信?
这些是我尝试过的方法,但都失败了。
方法1:使用脚本处理程序
WKWebView接收JS消息的新方法是使用委托方法userContentController:didReceiveScriptMessage:,该方法由window.webkit.messageHandlers.myMsgHandler.postMessage('What's the meaning of life, native code?')从JS调用。这种方法的问题是,在执行本机委托方法期间,JS执
我让WKWebview加载一个网页,如下所示:
class SafariExtensionViewController: SFSafariExtensionViewController, WKNavigationDelegate {
static let shared = SafariExtensionViewController()
var webView: WKWebView!
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
se
我很难从UIViewRepresentable WKWebView内部运行javascript文件。这可能是一个简单的问题,有一个简单的答案,但我似乎不明白这一点。我对Swift和iOS编程很陌生。
我想从一个传递给UIViewRepresentable of WKWebView的HTML字符串中链接到一个javascript文件。据我所知,Javascript没有运行。
ContentView:
import SwiftUI
struct ContentView: View {
var body: some View {
let HTMLString =
我正在尝试注入一个自定义的WebKit脚本消息处理程序。我的控制器和视图都被正确加载了。然而,在JS端(从Safari控制台),window.webkit.messageHandlers是空的。知道为什么吗?我的应用程序使用的是iOS 8.1,但即使升级到9.2,它也无法工作。
import Foundation
import UIKit
import WebKit
public class FooController: UIViewController, WKScriptMessageHandler {
private var wkWebView: WKWebView?
当我调试我的应用程序以找出为什么webview dowsn没有接收到我的消息时,我发现在我现有的webview (A)之上创建了另一个WkWebview (让我们称之为B)。因为我只引用A,所以我尝试使用它的内存地址直接在B上计算js。在lldb中这样做的正确方法是什么?
基于,我尝试过:settings set target.language swift e -- import WKWebview e -- let $webView = unsafeBitCast(0x13299e400, to:WKWebview.self)
为了调用webView.evaluateJavaScript,但
我看了这个帖子,How can I obtain POST request body from WKWebView in Swift?。但它不会告诉您正在使用的是哪个JS脚本。我刚开始将JS注入到swift中,所以这篇文章对我来说并不清楚。 在wkwebview中加载请求后,我想获取post请求的http正文。什么才是获得它的正确方法。
我希望javascript向我的WKWebView对象发回一条消息,但是我没有得到任何响应。当颜色改变时,我知道脚本正在运行,但我希望在控制台中也能看到"trigger from JS“打印出来,但我没有。如果我在Chrome中运行html,javascript控制台会显示"Cannot read property 'messageHandlers‘of undefined”。如果我为iOS构建(使用UIViewRepresentable、MakeUIView和UpdateUIView),结果是相同的。如果有人能发现我错过了什么,我将不胜感激。 这是完整的代码: im
在Swift 2.1.1和Xcode 7.1中
我的代码使用WKWebView并从本地文件加载index.html,但无法加载index.css和其他javascript文件,如head标记所示。
我最好的猜测是baseURL不正确,如果是这样,我如何正确设置baseURL?谢谢
import UIKit
import WebKit
class ViewController: UIViewController {
@IBOutlet var containerView: UIView! = nil //allows the class to refrence WKWebView
var w