更新1:
我还检查了MSDN上的window.external.notify()方法,在MSDN上,该方法以大写(window.external.Notify())中的“N”开头,但是在许多其他地方在互联网上,我也看到很多使用小写“n”的例子(window.external.notify())。这让我很困惑。
真的很奇怪。 我第一次使用window.external.notify方法时,效果很好。
去海外旅行大约2周,今天回到家里,找不到我的Javascript代码中有notidy方法的最新代码,但我的C#代码中的Browser_ScriptNotify方法的代码仍然存在。 搜索了1个小时,什么都没找到(它去了哪里?)
现在我再次编写了Javascript部分,这里是代码:
顺便说一下,我正在使用jQuery + jQuery Mobile来处理布局和UI。 在
中调用setColor方法$(document).on(“pagecreate”,“[data-role ='page']。weekday”,function (){ 的setColor(本); });
JavaScript的:
var myNotifier = function (msg) {
if (window.external)
{
window.external.notify('Hi Mate');
}
};
function setColor(activePage){
$(activePage).find('.rightCol').each(function (index, element) {
var innerRows = $(element).children("div").length;
if ($(element).hasClass('orange'))
{
$(element).children("div").addClass('orange');
}
var timeCol = $(element).prev();
var time = $(timeCol).text().trim();
var innerRowsDivs = $(element).children("div");
innerRowsDivs.each(function (index, rowElement) {
var innerRowContent = $(rowElement).text().trim();
if (innerRowContent === "") { }
else
{
var room = $(rowElement).find("div").text().trim();
var trainingClass = $(rowElement).find("strong").text().trim();
var duration = innerRowContent.substring(innerRowContent.length - 5, innerRowContent.length - 3).trim();
var message = String('myMsg:open:calender:' + time + '|' + room + '|' + trainingClass + '|' + duration);
$(rowElement).click(myNotifier(message));
}
});
});
}
C#代码:
void Browser_ScriptNotify(object sender, NotifyEventArgs e)
{
MessageBox.Show(e.Value);
if (e.Value.Contains("myMsg"))
{
if (e.Value.Contains("share"))
{
ShareLinkTask shareMyWebsite = new ShareLinkTask();
shareMyWebsite.Title = "WinTech Company";
shareMyWebsite.LinkUri = new Uri("http://wintech.azurewebsites.net/", UriKind.Absolute);
shareMyWebsite.Message = "Check this awesome website, I'm sure you will find something interesting!";
shareMyWebsite.Show();
}
if (e.Value.Contains("open"))
{
if (e.Value.Contains("website"))
{
WebBrowserTask myWebsite = new WebBrowserTask();
myWebsite.Uri = new Uri("http://wintech.azurewebsites.net/", UriKind.Absolute);
myWebsite.Show();
}
else
if (e.Value.Contains("facebook"))
{
WebBrowserTask myWebsite = new WebBrowserTask();
myWebsite.Uri = new Uri("https://www.facebook.com/franva008", UriKind.Absolute);
myWebsite.Show();
}
else
// myMsg:open:calender:<Message>
if (e.Value.Contains("calender"))
{
//var message = e.Value.Split(':')[3];
//var time = message.Split('|')[0];
//var trainingClassAndDuration = message.Split('|')[1];
//string[] content = trainingClassAndDuration.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
//string durationString = content[content.Length - 1];
//int takeCount = content.Length - 2;
//string trainingClass = string.Join(" ", content.Skip(1).Take(takeCount));
//string room = content[0];
//int duration = Convert.ToInt32(durationString.Substring(0, 2));
var message = e.Value.Split(':')[3];
var time = message.Split('|')[0];
var room = message.Split('|')[1];
var trainingClass = message.Split('|')[2];
var duration = Convert.ToInt32(message.Split('|')[3]);
DateTime startTime = ParseTime(time);
DateTime endTime = startTime.AddMinutes(duration);
this.CreateAppointment(startTime, endTime, room, trainingClass);
}
}
}
}
已在xaml中设置了IsScriptEnabled 并且我的代码中也连接了Browser_ScriptNotify事件。
我一直收到关于jquery的错误:
未捕获的TypeError:对象50没有方法'apply'
以及有关通知的错误
未捕获的TypeError:对象#没有方法'notify'
请帮助,这些错误让我停止了4个多小时,我已经阅读了很多类似的问题,但没有一个能解决我的问题。