1

我被分配了解决 Windows Phone C# 问题的任务,但不幸的是,我从未做过任何 Web 开发或电话开发,所以我遇到了一些麻烦。经过几个小时的努力,我放弃了,来到这里问......希望这个问题不要太模糊,因为我害怕它可能......

这个移动应用程序正在执行一些屏幕抓取操作,其中包含以下代码:

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

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

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

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

任何想法将不胜感激。

谢谢你。

4

1 回答 1

0

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

就像一些背景一样,我试图访问加载到 webview 控件 (WebView.NavigateToString("html")) 的 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]

于 2015-06-18T19:28:36.927 回答