InvokeScript第二次抛出异常(第一次工作)

时间:2014-01-17 02:41:50

标签: c# windows-phone-8 invokescript

我被分配了解决Windows Phone C#问题的任务,但不幸的是我从未做过任何网络开发或手机开发,所以我遇到了一些麻烦。经过几个小时的打击,我放弃了来到这里问...希望这个问题不是太模糊,因为我担心它可能会...

这个移动应用程序正在做一些屏幕抓取,并在其中有这一行:

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

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

Microsoft.Phone.Interop.ni.dll中出现“System.SystemException”类型的异常,但未在用户代码中处理 附加信息:发生了未知错误。错误:80020101。

我在查看此代码时遇到问题(我知道我已经知道了)。有谁知道为什么这条线会第二次崩溃?语法似乎是正确的。如果我注释掉这一行,程序会在下一个InvokeScript行崩溃。也许你不能两次调用同一行?

非常感谢任何想法。

谢谢。

1 个答案:

答案 0 :(得分:0)

我知道这是一个古老的问题,但我遇到了类似的问题[1],希望我的发现可能对其他人有所帮助。

正如一些背景知识,我试图访问我加载到webview控件的HTML页面中的锚链接(WebView.NavigateToString(" html"))。可以通过文本块(显然在webview之外)选择锚点。经过一番调查后,我得出的结论是webview控件并不像我用来导航到锚点的javascript那样。

我最初尝试使用javascript函数很简单,但效果不佳:

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

这将是第一次工作,但在我再次加载HTML页面之前再也没有。

我最终使用下面的代码,很简单,但是花了很长时间才能找到一些能够有效运行的东西(也许是一个更高级的pureJS人会从第一步知道这个)...

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

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

我的javascript会在我第一次运行invokescript时运行,但随后的任何尝试都会因为' 80020101'而失败。例外。 [1]