将更改通知主机
Notify host of changes
我有一个ASP.NET应用程序和一个承载WebBrowser的C#应用程序。ASP.NET应用程序通过C#应用程序运行。
我需要在点击某个按钮时通知C#应用程序。最好的方法可能是通过Javascript。这似乎并不复杂,因为我可以公开javascript window.external的函数,但我的C#应用程序看到的唯一URL是/Default.aspx。所有javascript函数(window.external.myfunc(..))都必须来自此页面。
有什么想法吗?我一片空白。我也有点不确定如何从代码后面调用javascript函数。ScriptManager.RegisterClientScriptBlock似乎使用了很多,但它能在一个页面上调用多次吗?
谢谢!
顺便说一句,对于C#客户端,我正在使用WebBrowser.ObjectForScripting来编写一个自定义对象,该对象将从Javscript中调用这些window.external函数。这是有效的。
带有ObjectForScripting
和window.external
的零件可以正常工作。
为了从ASP.NET代码中调用js函数,您应该使用来自js的ajax
调用。有两种方法:
1-创建一个web服务并不断调用它来检查是否发生了任何事情(即轮询)。这是最简单的方法,可以很容易地实现,例如使用jQuery
:
$.ajax(...);
然后从回调调用您的window.external.func()
到那个ajax调用(当然,如果它返回了预期值)。请注意,使用此方法,您将始终有延迟,因为客户端应该轮询服务器。
2-连接到服务器并保持其打开状态,然后在服务器准备就绪时从服务器发送数据。对于这个问题,您可以使用类似SignalR
的东西。这将解决延迟问题,但将保持开放连接,从而带来其他问题。
事实上,决定这两种方法的主要因素是你是否可以接受延迟。如果平均等待15秒不是问题,请使用轮询时间为30秒的第一种方法。如果您希望它是实时的,请使用第二种方法,但要小心其自身的问题,如长时间连接、SignalR中缺少会话状态等等
我只是想让你看看选择。如果有任何不清楚的地方,请告诉我。
- chrome扩展更改主机/域警告
- Firebase2(Firebase.google.com)推送通知-从外部管理
- 无法在窗口内使用rootScope.通知
- JS,用于播放提示音以通知未按预期工作
- 本地主机Typekit JS
- 单击Chrome通知后,转到已打开的选项卡
- Windows Azure通知中心错误
- Meteor应用程序无法运行-对象#<编译器>没有方法'主机'
- 如何使用Wordpress'RESTApi访问本地主机上的数据
- Meteor应用程序上的警报/通知不会出现
- GCM推送通知,如果应用程序在手机中关闭(Phonegap Android)
- 在通知点击时使用Ion中的OneSignal插件路由到应用程序中的状态
- PHP/JS-EchoJs函数PHP curl发布后的通知
- 将属性设置为未定义时未通知观察者
- Acync JS HTTP请求通知请求
- 在渲染骨干视图时获得通知
- 是否可以使用推送通知Windows 8 Metro应用程序's使用Javascript
- 用于本地主机上进程间通信的Javascript中的UDP
- 如何设置特定时间的本地通知
- 将更改通知主机