- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 WebBrowser 控件上使用 InvokeScript,尝试使用适用于 HTML 的 Google Maps JavaScript API 制作简单的 map 。我在 JavaScript 的 HTML 页面中编写了一些函数来处理 map ,并且我在 C# 的 WPF 应用程序中复制了这些方法并对其进行了编辑,以便它们调用方法并执行与 JavaScript 交互所需的操作。
我遇到了问题,因为 map 的 javascript 返回的值并非都是简单的单值类型(如字符串、整数或 bool 值),并且返回自定义类型(如 LatLng),而且我不知道如何“保留”返回的值作为自定义类型的单独“部分”。为了帮助解释更多:
通常我可以使用以下代码:
return Convert.ToInt16(browser.InvokeScript("getHeading"));
它在 JavaScript 中调用以下函数:
function GetHeading() {
return map.getHeading();
}
并返回 map 当前标题属性的简单整数值。这很容易,而且没有任何问题。但有些函数具有自定义的返回类型。
LatLng 类型由纬度值和经度值组成,因此它无法返回简单的值,如果我用本文的第一个代码片段尝试它,则会抛出错误。对于如下所示的某些功能:
function GetCentre() {
return map.getCenter();
}
返回包含 map 中心纬度和经度的 LatLng。如何保留返回值并将其保留为纬度和经度,然后将其放入 C# 中的自定义类型中,如下所示:
public class LatLng
{
public string latitude { get; set }
public string longitude { get; set; }
}
我必须在 JavaScript 端编写两个单独的函数吗?:一个返回中心的纬度,另一个返回中心的经度。基本上我想要做的是在 WebBrowser 控件上使用 InvokeScript,调用返回自定义类型的 javascript 函数,并将值保留在自定义类型中,然后我可以在 C# 中使用该值,例如 returnedValue.latitude 和 returnedValue.longitude。我该怎么做,谢谢?
最佳答案
只需使用 C# 和 .NET DLR 的动态
功能,并按原样返回 JavaScript 结构:
dynamic data = webBrowser1.Document.InvokeScript("eval", new[] {
"(function() { return { latitude: 1, longitude: 2 }; })()" });
MessageBox.Show("Data: " + data.latitude + ", " + data.longitude);
关于c# - 将 JavaScript 自定义类型从 InvokeScript 返回到 C#,并保留自定义类型结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21941440/
InvokeScript() 方法返回 null。 JavaScript: function gpsToAddress(gpsX, gpsY) { var coords = new daum.
如何执行JS代码: callbacks [0] (this, {"__title": null}); 通过 -> wb.Document.InvokeScript(); 或者说还有什么办法? 最佳答案
我有一段代码如下。 webBrowser.IsScriptEnabled = true; webBrowser.InvokeScript("eval", "alert('hey')"); 它给出发生未
我正在开发 Windows Phone 7.5 PhoneGap 应用程序。我需要从 C# 后面的代码调用 JavaScript 函数。我的 MainPage.xaml.cs 如下。 using Sy
我在 wp7 上使用 InvokeScript 方法时遇到了一些困难: webBrowser1.InvokeScript("eval", string.Format("document.getElem
我正在开发 Windows Phone 8 应用程序,我是 Windows Phone 8 的新手。 我正在使用 WebBrowser 控件并尝试加载具有 javascript 的 html 页面。
我想在托管的 WebBrowser 中调用 JavaScript 函数。我的 JavaScript 函数很慢(在 UI 中不检索数据或 ajax),我想让我的 WPF 界面在执行 JavaScript
我试图在 WebBrowser 控件上使用 InvokeScript 方法来在已加载到我的 WebBrowser 控件中的网页上执行脚本。如果我只调用一个简单的 javascript 函数,那么它可以
我正在运行 OOB silverlight 应用程序,其中有一个 WebBrowser 控件,但是当我调用 InvokeScript 时出现此错误:- Attempted to perform an
我需要检查我的 Windows Phone 应用程序中的 WebBrowser 控件是否有历史记录,我想出如何做到这一点的方法是使用 browser.InvokeScript("eval", "if(
我无法理解我正在构建的这个函数的流程。 public void PortalLogin(AutoResetEvent signal) {
在Windows Phone 8中,您可以使用: (string)browser.InvokeScript("eval", "document.title.toString()"); 从浏览器返回页面
我的 Windows 10 通用应用程序正在使用一个 webview,它使用 InvokeScript 调用 JS 函数“eval”,同时将一些其他 javascript 注入(inject)该函数。
我正在使用以下代码从带有 WebBroser 控件的 C# 应用程序调用 javascript 函数 webBrowser1.Document.InvokeScript("function", new
我正在尝试围绕 last.fm 制作一个包装器,并且需要在页面中调用一些 javascript 函数。特别是 Stop、Skip、Ban 和 Love。 InvokeScript 似乎适用于页面 HT
这个错误似乎是由于调用的 javascript 函数中出现的任何错误而引发的: SystemException was unhandled An unknown error has occurr
提前致谢。 在我的 WPF 应用程序中,我能够使用 WebBrowser 的 InvokeScript(String, Object[]) 方法成功地将消息从 WPF 传送到 JavaScript。我
我正在 WebBrowser 控件上使用 InvokeScript,尝试使用适用于 HTML 的 Google Maps JavaScript API 制作简单的 map 。我在 JavaScript
public void ProcessResult(string result) { this.MyTextBox.Text = result; } ... this.WebBrowser.In
在我的 WinForms 应用程序中,我需要从我的 WebBrowser 控件调用 javascript 函数。我使用了 Document.InvokeScript,它可以完美地单独使用函数,例如 D
我是一名优秀的程序员,十分优秀!