我在iOS中使用UIWebView,并与js通信。我使用JSContext获取以下js回调:
public typealias jsBridgeFuncAlias = (JSValue)->Void
@objc
protocol WebViewJSExport:JSExport {
var call:jsBridgeFuncAlias?{get}
}
class SAJavaScriptBridge:NSObject,WebViewJSExport{
public var call: jsBridgeFuncAlias?
public init(context:JSContext){
我正在使用一个WKWebView,我需要从服务器获取一些Javascript,并在我的WKWebView上执行这个javascript。
基本上,为了拥有这个javascript,我调用了一个API来发送一个JSON,如下所示:
{
"script" : "function()..." // the content of the script is a string here
}
所以我的问题是:我如何注入这个脚本?我首先需要创建一个包含此内容的JS文件,对吗?到目前为止,我是从最初添加到我的项目中的文件注入JS的。
我知道我可以创建一个这样的文件:
N
我让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