How to call JavaScript from C# - Cordova/PhoneGap

前端 未结 4 893
生来不讨喜
生来不讨喜 2021-01-18 05:10

I\'m using cordova/phonegap to make a windows phone app, i\'m trying to call a script from C# when an event fires.

Is there anyway to do this?

here\'s my cla

相关标签:
4条回答
  • 2021-01-18 05:36

    Try:

    webBrowser.InvokeScript("myFunction", "one", "two", "three");
    

    InvokeScript executes a scripting function defined in the currently loaded document, and passes the function an array of string parameters.
    http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff402838%28v=vs.105%29.aspx

    Obviously you have to have the JavaScript function defined in the loaded document.

    Depending on your view it may work like this:

    this.CordovaView.Browser.InvokeScript("eval", new string[] { "yourJavascriptFunction(); " });
    
    0 讨论(0)
  • 2021-01-18 05:38

    You could use DispatchCommandResult(); as outlined in the cordova documents. That way you can call the c# method, send whatever you need in the callback, and then just execute the javascript from within javascript.

    0 讨论(0)
  • 2021-01-18 05:50

    Try this example :

    string str="<script>alert(\"ok\");</script>";
    Page.ClientScript.RegisterStartupScript(this.GetType(), "Script", str, false);
    
    0 讨论(0)
  • 2021-01-18 05:54

    I found a solution, admittedly not the best one but works for me.

    I created a singleton class called WebViewHandler which looks like this

    class WebViewHandler
    {
        private static WebViewHandler instance;
        public bool isWebViewReady { get { return webView != null; } }
        public WPCordovaClassLib.CordovaView webView;
    
        private WebViewHandler()
        {
    
        }
    
        public void setWebView(ref WPCordovaClassLib.CordovaView webView)
        {
            this.webView = webView;
        }
    
        public static WebViewHandler getInstance()
        {
            if(instance == null){
                instance = new WebViewHandler();
            }
            return instance;
        } 
    }
    

    Then I set the webview in the constructor on the HomePage like so:

     public HomePage()
     {
          InitializeComponent();
          CordovaView.Loaded += CordovaView_Loaded;
          WebViewHandler.getInstance().setWebView(ref CordovaView); 
     }
    

    Once the WebView is set I can then call InvokeScript from any other class:

    WebViewHandler.getInstance().webView.CordovaBrowser.InvokeScript("MyJavaScriptFunctionThatIWishToCall");
    
    0 讨论(0)
提交回复
热议问题