mirror of
https://github.com/Ranchero-Software/NetNewsWire
synced 2025-08-12 06:26:36 +00:00
Use WKUserScript to inject scripts into the page. Use permalink as base URL.
This commit is contained in:
@@ -13,7 +13,17 @@ class PreloadedWebView: WKWebView {
|
||||
|
||||
private var isReady: Bool = false
|
||||
private var readyCompletion: (() -> Void)?
|
||||
|
||||
|
||||
static let userScripts: [WKUserScript] = {
|
||||
var scripts = [WKUserScript]()
|
||||
for fileName in ["main.js", "main_ios.js", "newsfoot.js"] {
|
||||
let scriptSource = try! String(contentsOf: baseURL.appending(path: fileName, directoryHint: .notDirectory))
|
||||
let script = WKUserScript(source: scriptSource, injectionTime: .atDocumentStart, forMainFrameOnly: true, in: appScriptsWorld)
|
||||
scripts.append(script)
|
||||
}
|
||||
return scripts
|
||||
}()
|
||||
|
||||
init(articleIconSchemeHandler: ArticleIconSchemeHandler) {
|
||||
let preferences = WKPreferences()
|
||||
preferences.javaScriptCanOpenWindowsAutomatically = false
|
||||
@@ -26,6 +36,13 @@ class PreloadedWebView: WKWebView {
|
||||
configuration.mediaTypesRequiringUserActionForPlayback = .audio
|
||||
configuration.setURLSchemeHandler(articleIconSchemeHandler, forURLScheme: ArticleRenderer.imageIconScheme)
|
||||
|
||||
let userContentController = WKUserContentController()
|
||||
let appScriptsWorld = WKContentWorld.world(name: "NetNewsWire")
|
||||
for script in Self.userScripts {
|
||||
userContentController.addUserScript(script)
|
||||
}
|
||||
configuration.userContentController = userContentController
|
||||
|
||||
super.init(frame: .zero, configuration: configuration)
|
||||
}
|
||||
|
||||
|
||||
@@ -594,7 +594,7 @@ private extension WebViewController {
|
||||
]
|
||||
|
||||
let html = try! MacroProcessor.renderedText(withTemplate: ArticleRenderer.page.html, substitutions: substitutions)
|
||||
webView.loadHTMLString(html, baseURL: ArticleRenderer.page.baseURL)
|
||||
webView.loadHTMLString(html, baseURL: URL(string: rendering.baseURL))
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -5,15 +5,6 @@
|
||||
<style>
|
||||
[[style]]
|
||||
</style>
|
||||
<script src="main.js"></script>
|
||||
<script src="main_ios.js"></script>
|
||||
<script src="newsfoot.js" async="async"></script>
|
||||
<script type="text/javascript">
|
||||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
window.scrollTo(0, [[windowScrollY]]);
|
||||
processPage();
|
||||
})
|
||||
</script>
|
||||
<base href="[[baseURL]]">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
Reference in New Issue
Block a user