diff --git a/include/wx/osx/webview_webkit.h b/include/wx/osx/webview_webkit.h index e7900cfbb8..3d95825b73 100644 --- a/include/wx/osx/webview_webkit.h +++ b/include/wx/osx/webview_webkit.h @@ -91,6 +91,9 @@ public: bool RunScript(const wxString& javascript, wxString* output = NULL) const wxOVERRIDE; virtual bool AddScriptMessageHandler(const wxString& name) wxOVERRIDE; virtual bool RemoveScriptMessageHandler(const wxString& name) wxOVERRIDE; + virtual bool AddUserScript(const wxString& javascript, + wxWebViewUserScriptInjectionTime injectionTime = wxWEBVIEW_INJECT_AT_DOCUMENT_START) wxOVERRIDE; + virtual void RemoveAllUserScripts() wxOVERRIDE; //Virtual Filesystem Support virtual void RegisterHandler(wxSharedPtr handler) wxOVERRIDE; diff --git a/src/osx/webview_webkit.mm b/src/osx/webview_webkit.mm index 9e3abda81a..4f64352a69 100644 --- a/src/osx/webview_webkit.mm +++ b/src/osx/webview_webkit.mm @@ -407,6 +407,23 @@ bool wxWebViewWebKit::RemoveScriptMessageHandler(const wxString& name) return true; } +bool wxWebViewWebKit::AddUserScript(const wxString& javascript, + wxWebViewUserScriptInjectionTime injectionTime) +{ + WKUserScript* userScript = + [[WKUserScript alloc] initWithSource:wxCFStringRef(javascript).AsNSString() + injectionTime:(injectionTime == wxWEBVIEW_INJECT_AT_DOCUMENT_START) ? + WKUserScriptInjectionTimeAtDocumentStart : WKUserScriptInjectionTimeAtDocumentEnd + forMainFrameOnly:NO]; + [m_webView.configuration.userContentController addUserScript:userScript]; + return true; +} + +void wxWebViewWebKit::RemoveAllUserScripts() +{ + [m_webView.configuration.userContentController removeAllUserScripts]; +} + void wxWebViewWebKit::LoadURL(const wxString& url) { [m_webView loadRequest:[NSURLRequest requestWithURL: