2014-01-17 103 views
1

我已被分配解决Windows Phone C#问题的任务,但不幸的是,我从来没有做过任何Web开发或电话开发,所以我有点麻烦。几个小时打我的头后,我放弃了,来这里问...希望这个问题不是太模糊了,因为我怕这可能是...InvokeScript第二次抛出异常通过(第一次工作)

此移动应用做了屏幕刮位,并拥有这条线在它:

wb.InvokeScript ("eval", "document.getElementById('ctl00_ContentPlaceHolder1_textboxFirstName').value = '" + firstName + "';"); 

它通过完美的作品是第一次,但第二次通过,它崩溃。错误消息是这样的:

在Microsoft.Phone.Interop.ni.dll中发生类型'System.SystemException'的异常,但未在用户代码中处理 其他信息:发生未知错误。错误:80020101.

我有下面这段代码(我知道我在我头上)的麻烦。有谁知道为什么这条线会第二次崩溃?该语法似乎是正确的。如果我注释掉这一行,程序会在下一个InvokeScript行中崩溃。也许你不能两次调用同一行?

任何想法将不胜感激。

谢谢。

+0

只是一个想法 - 尝试使用转义双引号而不是单引号。我认为InvokeScript可能会生成类似'eval('...')'的东西,在这种情况下,您的单引号将会弹出。 – bhamlin

+0

感谢您的回应,bhamlin,但没有去。我试过了,但它仍然在第二次爆炸。第一次仍然正常工作。 – bek

回答

0

我知道这是一个老问题,但我有类似的问题[1],并希望我的发现可能有助于别人。

正如一些背景,我试图访问我装了一个WebView控件(WebView.NavigateToString(“HTML”))的HTML页面内锚链接。锚可以通过文本块(显然在web视图之外)选择。经过一番调查,我得出的结论是,webview控件不喜欢我用来导航到锚的JavaScript。

我最初尝试在JavaScript函数很简单,但效果欠佳:

function scrollToAnchor(id) { window.location.hash = id; } 

这将工作的第一次,但从来没有一次,直到我再次加载HTML页面。


我结束了使用下面的代码,很简单,但它花了很长时间找到的东西,consistantly工作(也许更先进的pureJS人将不得不从步骤一个知道这一点)...

function scrollToAnchor(id) { location.href = id; } 

所以,结论看起来这些错误通常可以归因于坏/不支持JS代码。也许首先在IE中尝试代码,如果在那里工作,它应该在Windows Phone的webview控件中工作。

我的JavaScript会工作,我第一次跑invokescript但任何后续尝试总是以“80020101”异常失败。 [1]

相关问题