简体   繁体   中英

C# WebBrowser InvokeScript gives error

I am developing Windows Phone 7.5 PhoneGap app. I needed to call JavaScript function from code behind C#. My MainPage.xaml.cs is follows.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;
using System.IO;
using System.Windows.Media.Imaging;
using System.Windows.Resources;



namespace MFMA
{
    public partial class MainPage : PhoneApplicationPage
    {
        WebBrowser webBrowser = new WebBrowser();

        // Constructor
        public MainPage()
        {
            InitializeComponent();
            this.CordovaView.Loaded += CordovaView_Loaded;
        }

        private void CordovaView_Loaded(object sender, RoutedEventArgs e)
        {
            this.CordovaView.Loaded -= CordovaView_Loaded;
            // first time load will have an animation
            Storyboard _storyBoard = new Storyboard();
            DoubleAnimation animation = new DoubleAnimation()
            {
                From = 0,
                Duration = TimeSpan.FromSeconds(0.6),
                To = 90
            };
            Storyboard.SetTarget(animation, SplashProjector);
            Storyboard.SetTargetProperty(animation, new PropertyPath("RotationY"));
            _storyBoard.Children.Add(animation);
            _storyBoard.Begin();
            _storyBoard.Completed += Splash_Completed;
        }

        void Splash_Completed(object sender, EventArgs e)
        {
            (sender as Storyboard).Completed -= Splash_Completed;
            LayoutRoot.Children.Remove(SplashImage);
        }

        private void OnClearCookies(object sender, EventArgs e)
        {
            this.webBrowser.IsScriptEnabled = true;
            this.webBrowser.InvokeScript("clearCookies");




        }
    }
}

The following is the index.html.

    <!DOCTYPE html> 
<html> 
    <head> 

        <meta name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1,initial-scale=1">
        <title>MFMA</title> 
        <link rel="stylesheet" href="css/jquery.mobile-1.3.1.css" />
        <link rel="stylesheet" href="css/jquery.mobile.structure-1.3.1.css" />

        <Script type="text/javascript" src="js/jquery-2.0.0.js"></script>
        <script type="text/javascript" src="js/jquery.mobile-1.3.1.js"></script>
        <script type="text/javascript" src="cordova-2.4.0.js"></script>
         <script type="text/javascript" src="js/index.js"></script>

    </head>
    <body>
        <div data-role="page" id="interfacePage" class="page-bg" style="background: rgb(64,150,194) url(Icons/background_mobile.png) no-repeat center center;
    background-position: 0% 90%;background-size:100%; -webkit-background-size: cover; -moz-background-size: cover;
    -o-background-size: cover; background-size: cover;background-attachment:fixed">
            <div data-role="content" >
            </div>
        </div>
        <div class="app">
            <h1>Apache Cordova</h1>
            <div id="deviceready" class="blink">
                <p class="event listening">Connecting to Device</p>
                <p class="event received">Device is Ready</p>
            </div>
        </div>
        <script type="text/javascript">
            app.initialize();
            document.addEventListener("deviceready", onDeviceReady, false);
            function onDeviceReady() {

                console.log('start!!!!!!!!!!!!!!!!!!!!!!!!!!');
                var url;
                if (typeof (window.localStorage) == 'undefined') {
                    console.log('local storage not defined');
                }
                if (typeof (window.localStorage) != 'undefined') {
                    console.log('getting item');
                    url = window.localStorage.getItem("url");
                    console.log('saved URL is ' + url);
                }
                //var url = getCookie("url");
                if (url != null && url != "") {
                    window.location.href = 'http://' + url;
                } else {
                    window.location.href = 'index1.html';
                }
            }

            function clearCookies() {
                //console.log("success!!!!!!!!!!!!!!!");
                window.localStorage.removeItem('url'); 
            }

        </script>
    </body>
</html>

I am getting " An unknown error has occurred. Error: 80020006. " May I know how to fix this. I already went through forums and Stack Overflow. I could not get a solution.

Sometimes, you have to use empty parameters like

this.webBrowser.InvokeScript("clearCookies", new string[]{});

You can also directly invoke

this.webBrowser.InvokeScript("eval", 
 new string[] { "window.localStorage.removeItem('url'); " });

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM