@@ -10,10 +10,7 @@ public extension Notification.Name {
1010 rawValue: " DocumentationViewControllerViewerStateDidChangeNotification " )
1111}
1212
13- class DocumentationViewController :
14- NSViewController ,
15- WKNavigationDelegate
16- {
13+ class DocumentationViewController : NSViewController {
1714
1815 enum ViewerState {
1916 case blank
@@ -68,20 +65,7 @@ class DocumentationViewController:
6865 userContentController. addUserScript ( integration)
6966 }
7067
71- if let pageObserverScript = readUserScript ( " page-observer " ) {
72- let pageObserver = WKUserScript ( source: pageObserverScript, injectionTime: . atDocumentEnd, forMainFrameOnly: true )
73- userContentController. addUserScript ( pageObserver)
74- }
75-
76- if let pageSearchScript = readUserScript ( " page-search " ) {
77- let pageSearch = WKUserScript ( source: pageSearchScript, injectionTime: . atDocumentEnd, forMainFrameOnly: true )
78- userContentController. addUserScript ( pageSearch)
79- }
80-
81- if let uiSettingsScript = readUserScript ( " ui-settings " ) {
82- let uiSettings = WKUserScript ( source: uiSettingsScript, injectionTime: . atDocumentEnd, forMainFrameOnly: true )
83- userContentController. addUserScript ( uiSettings)
84- }
68+ addFeatureScripts ( userContentController)
8569
8670 webView = WKWebView . init ( frame: . zero, configuration: config)
8771 webView. translatesAutoresizingMaskIntoConstraints = false
@@ -154,6 +138,29 @@ class DocumentationViewController:
154138 }
155139 }
156140
141+ private func addFeatureScripts( _ controller: WKUserContentController ) {
142+ if let pageObserverScript = readUserScript ( " page-observer " ) {
143+ let pageObserver = WKUserScript ( source: pageObserverScript,
144+ injectionTime: . atDocumentEnd,
145+ forMainFrameOnly: true )
146+ controller. addUserScript ( pageObserver)
147+ }
148+
149+ if let pageSearchScript = readUserScript ( " page-search " ) {
150+ let pageSearch = WKUserScript ( source: pageSearchScript,
151+ injectionTime: . atDocumentEnd,
152+ forMainFrameOnly: true )
153+ controller. addUserScript ( pageSearch)
154+ }
155+
156+ if let uiSettingsScript = readUserScript ( " ui-settings " ) {
157+ let uiSettings = WKUserScript ( source: uiSettingsScript,
158+ injectionTime: . atDocumentEnd,
159+ forMainFrameOnly: true )
160+ controller. addUserScript ( uiSettings)
161+ }
162+ }
163+
157164 private func readUserScript( _ name: String ) -> String ? {
158165 guard let scriptPath = Bundle . main. path ( forResource: name, ofType: " js " , inDirectory: " user-scripts " ) else {
159166 return nil
@@ -218,6 +225,14 @@ extension DocumentationViewController: WKUIDelegate {
218225 }
219226}
220227
228+ // MARK:- WKNavigationDelegate
229+ extension DocumentationViewController : WKNavigationDelegate {
230+ func webView( _ webView: WKWebView , didFinish navigation: WKNavigation ! ) {
231+ let ucc = webView. configuration. userContentController
232+ addFeatureScripts ( ucc)
233+ }
234+ }
235+
221236// MARK:- WKScriptMessageHandler
222237extension DocumentationViewController : WKScriptMessageHandler {
223238 func userContentController( _ userContentController: WKUserContentController ,
0 commit comments