From c7e4c70af18405fa2eff3155ecba13988b4912ef Mon Sep 17 00:00:00 2001 From: "huayong.xu" Date: Wed, 16 Feb 2022 13:11:28 +0800 Subject: [PATCH] [NUI] Add an API for evaluating js with callback in WebView. --- src/Tizen.NUI/src/public/WebView/WebView.cs | 13 +++++++++++++ test/Tizen.NUI.WebViewTest/SimpleWebViewApp.cs | 6 ++++++ 2 files changed, 19 insertions(+) diff --git a/src/Tizen.NUI/src/public/WebView/WebView.cs b/src/Tizen.NUI/src/public/WebView/WebView.cs index 953cdd3..95014d9 100755 --- a/src/Tizen.NUI/src/public/WebView/WebView.cs +++ b/src/Tizen.NUI/src/public/WebView/WebView.cs @@ -1642,6 +1642,19 @@ namespace Tizen.NUI.BaseComponents } /// + /// Evaluates JavaScript code represented as a string. + /// + /// The JavaScript code + /// The callback for result of JavaScript code evaluation + [EditorBrowsable(EditorBrowsableState.Never)] + public void EvaluateJavaScript(string script, JavaScriptMessageHandler handler) + { + System.IntPtr ip = System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(handler); + Interop.WebView.EvaluateJavaScript(SwigCPtr, script, new global::System.Runtime.InteropServices.HandleRef(this, ip)); + if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve(); + } + + /// /// Add a message handler into the WebView. /// /// The name of exposed object diff --git a/test/Tizen.NUI.WebViewTest/SimpleWebViewApp.cs b/test/Tizen.NUI.WebViewTest/SimpleWebViewApp.cs index 9b931bb..1619947 100755 --- a/test/Tizen.NUI.WebViewTest/SimpleWebViewApp.cs +++ b/test/Tizen.NUI.WebViewTest/SimpleWebViewApp.cs @@ -595,6 +595,11 @@ namespace Tizen.NUI.WebViewTest } } + private void OnJavaScriptEvaluated(string message) + { + Log.Info("WebView", $"------------javascript evaluation result: {message}-------"); + } + private void OnJavaScriptAlert(string message) { Log.Info("WebView", $"------------javascript alert {message}-------"); @@ -808,6 +813,7 @@ namespace Tizen.NUI.WebViewTest //simpleWebView.ClearAllTilesResources(); //simpleWebView.ClearHistory(); simpleWebView.EvaluateJavaScript("document.body.style.backgroundColor='yellow';"); + simpleWebView.EvaluateJavaScript("document.body.innerHTML", OnJavaScriptEvaluated); Log.Info("WebView", $"web view, ScaleFactor is {simpleWebView.GetScaleFactor()}"); //Rectangle viewArea = new Rectangle(0, 0, 20, 20); -- 2.7.4