window.external.notify停止工作

时间:2014-03-04 12:49:10

标签: c# javascript jquery-mobile cordova windows-phone-8

更新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个多小时,我已经阅读了很多类似的问题,但没有一个能解决我的问题。

0 个答案:

没有答案