background-color
を上書きしてしまうと元の値がわからなくなるので、
上書きする前に初期値を取得して覚えておく必要があります。
以下ボタンタップで背景色が切り替わるプログラムのサンプルです。
swift
1import UIKit
2import WebKit
3
4class ViewController: UIViewController {
5 @IBOutlet weak var webView: WKWebView!
6 @IBOutlet weak var button: UIButton!
7
8 private enum BackgroundState {
9 case initial
10 case custom
11 }
12
13 private var backgroundState = BackgroundState.initial
14 private var initialBackgroundColor = ""
15 private var customBackgroundColor = "rgba(0, 0, 0, 0.25)"
16
17 override func viewDidLoad() {
18 super.viewDidLoad()
19
20 webView.navigationDelegate = self
21
22 webView.load(URLRequest(url: URL(string: "https://example.com/")!))
23 }
24
25 @IBAction func buttonTouchUpInside(_ sender: UIButton) {
26 // ボタンをタップする度に背景色が入れ替わる
27 // initialBackgroundColor <=> customBackgroundColor
28 if backgroundState == .initial {
29 webView.evaluateJavaScript("document.getElementsByTagName(\"body\")[0].style.backgroundColor = \"(customBackgroundColor)\"")
30
31 backgroundState = .custom
32 } else {
33 webView.evaluateJavaScript("document.getElementsByTagName(\"body\")[0].style.backgroundColor = \"(initialBackgroundColor)\"")
34
35 backgroundState = .initial
36 }
37 }
38}
39
40extension ViewController: WKNavigationDelegate {
41 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
42 // 背景色の初期値を取得、変数に格納
43 webView.evaluateJavaScript("getComputedStyle(document.getElementsByTagName(\"body\")[0]).getPropertyValue(\"background-color\")", completionHandler: { (result, error) in
44 if let initialBackgroundColor = result as? String {
45 self.initialBackgroundColor = initialBackgroundColor
46 }
47 })
48 }
49}
50
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。