C#WebBrowser InvokeScript给出错误

时间:2013-06-27 05:50:34

标签: c# javascript windows-phone-7 cordova invokescript

我正在开发Windows Phone 7.5 PhoneGap应用。我需要从C#后面的代码调用JavaScript函数。我的MainPage.xaml.cs如下。

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");




        }
    }
}

以下是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>

我得到“An unknown error has occurred. Error: 80020006.”我可以知道如何解决这个问题。我已经通过论坛和Stack Overflow。我无法得到解决方案。

1 个答案:

答案 0 :(得分:2)

有时候,你必须使用像

这样的空参数
this.webBrowser.InvokeScript("clearCookies", new string[]{});

您也可以直接调用

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