gpt4 book ai didi

javascript - 如何在 Swift 3 中的 WKWebView 中注入(inject) javascript

转载 作者:行者123 更新时间:2023-12-01 07:58:44 24 4
gpt4 key购买 nike

我试图通过在整个 javascript 中注入(inject)一个新的 CSS 规则来排除一些网页元素,如侧边栏,我在 xcode 中创建了一个新的 javascript 文件,带有一个新的样式标签,以隐藏我在 Google chrome 开发人员工具中检查并结束的侧边栏使用此代码:

var styleTag = document.createElement("style");
styleTag.textContent = '.sidebar {display:none;}';
document.documentElement.appendChild(styleTag);

并创建了 WKWebViewConfiguration 对象,该对象包含一些允许在 native 代码和托管 Web 内容之间建立桥梁的属性,如 here 所述但仍然没有让这个脚本运行。

这是我完整的 ViewController 代码:

import UIKit
import WebKit

class scrapedBrowser: UIViewController, WKNavigationDelegate {

var webView: WKWebView!
var progressView: UIProgressView!

override func loadView() {

webView = WKWebView()
webView.navigationDelegate = self
view = webView
}

required init?(coder aDecoder: NSCoder) {
let config = WKWebViewConfiguration()
let scriptURL = Bundle.main.path(forResource: "hideSections", ofType: "js")
let scriptContent:String?
do {
scriptContent = try String(contentsOfFile: scriptURL!, encoding: String.Encoding.utf8)
}
catch _ {
scriptContent = nil
}

let script = WKUserScript(source: scriptContent!, injectionTime: .atDocumentStart, forMainFrameOnly: true)
config.userContentController.addUserScript(script)
super.init(coder: aDecoder)
self.webView?.navigationDelegate = self
}

override func viewDidLoad() {
super.viewDidLoad()

let url = URL(string: "http://yourwebsite.com/")!
let request = URLRequest(url: url)
webView.load(request)
webView.allowsBackForwardNavigationGestures = true
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
title = webView.title
}

}

最佳答案

您需要将config 分配给WKWebView

webView = WKWebView(frame: CGRect.zero, configuration: config)

关于javascript - 如何在 Swift 3 中的 WKWebView 中注入(inject) javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41856167/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com