我正在开发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。我无法得到解决方案。
答案 0 :(得分:2)
有时候,你必须使用像
这样的空参数this.webBrowser.InvokeScript("clearCookies", new string[]{});
您也可以直接调用
this.webBrowser.InvokeScript("eval",
new string[] { "window.localStorage.removeItem('url'); " });