私はWKWebViewでハイチャートを実装しようとしています。私は、html全体からチャート要素を分離することに成功しました。問題は今、チャートは機能を失っている。それでも、ページ全体を読み込む方法はありますか?グラフ要素のみを表示する方法はありますか?HTML要素を非表示にすることはできますか?
Here'sコード:サイトへ
import Cocoa
import WebKit
class ViewController: NSViewController {
var webView = WKWebView()
private var userContentController: WKUserContentController!
override func viewDidLoad() {
super.viewDidLoad()
let userContentController = WKUserContentController()
let configuration = WKWebViewConfiguration()
configuration.userContentController = userContentController
let webView = WKWebView(frame: view.bounds, configuration: configuration)
view.addSubview(webView)
self.webView = webView
userContentController.removeAllUserScripts()
// Is there a possibility to just hide all Elements except 'document.body.innerHTML'?
// So the highchart will keep it´s functionality
let script =
"var selectedElement = document.querySelector('.panel-body');" +
"document.body.innerHTML = selectedElement.innerHTML;"
let userScript = WKUserScript(source: script,
injectionTime: WKUserScriptInjectionTime.atDocumentEnd,
forMainFrameOnly: true)
userContentController.addUserScript(userScript)
let url = NSURL(string: "https://www.worldweatheronline.com/v2/weather-averages.aspx?locid=194044&root_id=192045&wc=local_weather&map=~/brussels-weather-averages/be.aspx")!
webView.load(NSURLRequest(url: url as URL) as URLRequest)
}
}
- 私の日のために今これをしようとは、いくつかの助けを得ることは非常に喜んでいるだろう。
これは非常に合理的な解決策のようです。私はちょうど試みました: 'let script = " var chartDiv = document.querySelector( '。panel-body') "+ " document.body.innerHTML = '' "+ " document.body.append(chartDiv); "しかし、今はページ全体を見せている。私は何かを監督しましたか? –
@JoschHazard Chrome開発ツールのページでこのjsを実行したところ、グラフのみが表示されたページが表示されました。挿入されたスクリプトが実行される前に、完全に読み込まれるように、ページ上でスクリプトの挿入を遅延させる(または読み込み完了を検出するためにWKWebView機能を使用する)必要があるかもしれません。 – JeremyPlease
@ JeremyPLease:確かにこれをチェックします。 –