C# javascript 交互 互通 C# javascriptC# javascripC# jsC# javascript 交互C# js交互 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 C#和 javascript是两种编程语言,什么叫两种语言如何相互调用啊?中文如何调用英文,你给我说说?只有C#和 javascript编程的程序间才存在调用一说.而你又不说是什么程序.是调用dll,是web页面前台后台互相调用,还是什么. wpf 程序 调用 js 函数 是否想用c#弄界面,js写逻辑?V8引擎,或者看看有没有C#实现的js引擎。偷偷告诉你,其实python也很好用,而且有.net的实现,ironpython WebBrowser可以,而且很方便,如果不能用就太可惜了。 javascript与C#互相调用与访问示例 //声明C#变量和方法 public string Str = "C# variable";//C#声明的变量 public string GetStr(string str) //C#声明的方法 { return str + Str; }使用javascript脚步访问C#变量和方法 <script language="javascript" type="text/javascript"> function CallCSVariable() { alert("<%= Str %>"); } function CallCSMethod() { alert('<%= GetStr("this is a ") %>'); } </script>//互相访问的方法 <input id="Hidden1" type="hidden" runat="server" />//声明隐藏字段//取得或设置隐藏字段的值 <script language="javascript" type="text/javascript"> function SetHidden() { document.getElementById("Hidden1").value = "javascript set value"; } </script>//访问隐藏字段的值 protected void btnCallJavaScript_Click(object sender, EventArgs e) { //必须将Hidden放在Form中 Response.Write(Hidden1.Value); }//创建对象绑定控件 protected void Page_Load(object sender, EventArgs e) { //创建字典对象 Dictionary<string,string> colorDict = new Dictionary<string,string>(); colorDict.Add("red","红色"); //添加字典项 colorDict.Add("blue", "蓝色"); colorDict.Add("green", "绿色"); colorDict.Add("yellow", "黄色"); Repeater1.DataSource = colorDict;//将字典对象绑定到Repeater Repeater1.DataBind(); }//创建字典对象 <asp:Repeater ID="Repeater1" runat="server"> <HeaderTemplate><table></HeaderTemplate> <ItemTemplate> <tr> <td> <%# Eval("Key") %> </td> <td> <%# Eval("Value") %> </td> </tr> </ItemTemplate> <FooterTemplate></table></FooterTemplate> </asp:Repeater> 非常感谢您的回复 我想用wpf(c/s) javascript 互通 javascript 是其他公司提供的api 关于v8 引擎和python 我之前没了解过 能否再详细点 非常感谢 非常感谢您的回复 我是用wpf(c/s) 客户端 调用javascript 网上的一些方法我也已经看过了 webbrowser 在调用javascript 的时候会产生错误所以还是放弃采用webbrowser http://blog.csdn.net/lyflcear/article/details/10055293 非常感谢您的回复 OpenWebkitSharp 我用没有配置成功 而且引入的文件较多 我只需要实现wpf javascript 互通就行 非常感谢您的回复 OpenWebkitSharp 我用没有配置成功 而且引入的文件较多 我只需要实现wpf javascript 互通就行所谓的Javascript与C#互通,意思就是你的应用程序作为浏览器,为javascript提供external方法。当使用webbrowsers的时候,使用的是com机制,容易实现,几行代码就行了。使用webkit的时候,由于webkit.net并不提供com机制,需要使用webkit所支持的机制,openwebitsharp实现了该内容,你只需要配置好就行了。除此之外,也可以使用ajax绕过浏览器实现,但是恐怕实现起来的效果和难度比配置一下openwebsharp要难上好多倍。所以不推荐。还有一种办法,应用程序监控htmldocument变化,出现某一特殊数据时获取信息,执行方法。后两种都不是正道。送你一句话:往往那些看起来又苦又难的路,才是真正的捷径。 非常感谢您的回复 OpenWebkitSharp 我用没有配置成功 而且引入的文件较多 我只需要实现wpf javascript 互通就行所谓的Javascript与C#互通,意思就是你的应用程序作为浏览器,为javascript提供external方法。当使用webbrowsers的时候,使用的是com机制,容易实现,几行代码就行了。使用webkit的时候,由于webkit.net并不提供com机制,需要使用webkit所支持的机制,openwebitsharp实现了该内容,你只需要配置好就行了。除此之外,也可以使用ajax绕过浏览器实现,但是恐怕实现起来的效果和难度比配置一下openwebsharp要难上好多倍。所以不推荐。还有一种办法,应用程序监控htmldocument变化,出现某一特殊数据时获取信息,执行方法。后两种都不是正道。送你一句话:往往那些看起来又苦又难的路,才是真正的捷径。谢谢大侠 送的话也很不错 我还是配置 openwebsharp 吧 把你的"webbrowser 报错"贴出来。 非常感谢您的回复 我想用wpf(c/s) javascript 互通 javascript 是其他公司提供的api 关于v8 引擎和python 我之前没了解过 能否再详细点 非常感谢部署个websevrice中转下 考虑下 Chrome App Launcher 做 C/S 使用AjaxMethod使用AjaxMethod可以在客户端异步调用服务端方法,简单地说就是在前台JS里调用后台.cs文件里的方法。 <script type="text/javascript"> //第一次展开时,加载子节点 function nodeLoad(node) { Coolite.AjaxMethods.NodeLoad(node.id, { success: function (result) { var data = eval("(" + result + ")"); node.loadNodes(data); }, failure: function (errorMsg) { Ext.Msg.alert("错误提示", errorMsg); } }); }</script> /// <summary> /// 展开一个结点时,加载其所有子节点,返回json给前台 /// </summary> /// <param name="nodeID"></param> /// <returns></returns> [AjaxMethod] public string NodeLoad(string nodeID) { Coolite.Ext.Web.TreeNodeCollection nodes = new Coolite.Ext.Web.TreeNodeCollection(); if (!string.IsNullOrEmpty(nodeID)) { DataRow[] dr = dtAll.Select("pid='" + nodeID + "'", "gname asc"); Coolite.Ext.Web.AsyncTreeNode childNode; for (int i = 0; i < dr.Length; i++) { childNode = new AsyncTreeNode(); childNode.NodeID = dr[i]["gid"].ToString(); childNode.Text = dr[i]["gname"].ToString(); if (dr[i]["typeid"].ToString() == "网格") //是叶子结点 { childNode.Checked = ThreeStateBool.False; childNode.AllowChildren = false; childNode.Expandable = ThreeStateBool.False; } else //是内部结点 { childNode.Checked = ThreeStateBool.Undefined; childNode.AllowChildren = true; childNode.Expandable = ThreeStateBool.True; } nodes.Add(childNode); } } return nodes.ToJson(); } 拦截beforenavgate跳转,js将页面跳到指定网址如 about:cSharp.Command 拦截到后cancel,执行指定命令 蛮牛的,不用ajax、服务端语言<%%>,需要原生的js直接调用后台方法,还真的不会 C#编写COM组件用于JS在浏览器内进行交互 看你要调用的js是像nodejs那样把js作为独立于浏览器的程序,或者是普通的那样浏览器相关的。(主要区别就是是不是要操作DOM,如果DOM无关,那一般可以在浏览器之外执行)如果是独立的程序,用https://clearscript.codeplex.com/可以实现你的需求,这个也是微软做的。如果是和浏览器相关的,那需要集成一个浏览器才能保证正确。WebBrowser最方便集成,不过IE比较呵呵然后https://github.com/cefsharp/CefSharp可以用来集成Chromium,也就是Chrome的开源版本。这个比openwebsharp要更好。源码里有wpf集成的例子:https://github.com/cefsharp/CefSharp/tree/master/CefSharp.Wpf.Example,也有nuget包:http://www.nuget.org/packages/CefSharp.Wpf/ js 中 [code=javascript]//响应后台事件function onClickForm(cmd) { window.external.CallWin(cmd); }[/code] /// <summary> /// WebBrowser与后台交互方法 /// </summary> /// <param name="inStr"></param> public void CallWin(string inStr) {MessageBox.show("js调用");}我项目里面就是这样用的但是必须放到 WebBrowser或者写成Activex 插件也可以调用 Activex 具体百度上有 差点忘了还需要引用 这两个哪一个 忘了 [System.Runtime.InteropServices.ComVisibleAttribute(true)][DllImport("user32.dll", EntryPoint = "ShowCursor", CharSet = CharSet.Auto)] 表格循环从下到上,倒着来,怎么写呢? 基础问题 c# 窗体程序如何联接数据库 C#如何监控进程的启动 如何将两个查询合并?? 一个oracle里关于循环加变量的问题· 运行报错 未将对象引用设置到对象的实例 提交之前的error message 在history.back() 仍然出现,有什么好的解决办法? asp.net 做网站,JAVA做安卓App,objc做IOS,服务器端我想用C#http来做。。。怎么样? 请教string.format的问题 String转document,java程序访问页面,执行js Winform显示word的打印预览,但是不显示word文件?
中文如何调用英文,你给我说说?
只有C#和 javascript编程的程序间才存在调用一说.
而你又不说是什么程序.
是调用dll,是web页面前台后台互相调用,还是什么.
wpf 程序 调用 js 函数
V8引擎,或者看看有没有C#实现的js引擎。偷偷告诉你,其实python也很好用,而且有.net的实现,ironpython
//声明C#变量和方法
public string Str = "C# variable";//C#声明的变量 public string GetStr(string str) //C#声明的方法 {
return str + Str;
}
使用javascript脚步访问C#变量和方法
<script language="javascript" type="text/javascript">
function CallCSVariable()
{
alert("<%= Str %>");
}
function CallCSMethod()
{
alert('<%= GetStr("this is a ") %>');
}
</script>
//互相访问的方法
<input id="Hidden1" type="hidden" runat="server" />//声明隐藏字段
//取得或设置隐藏字段的值
<script language="javascript" type="text/javascript">
function SetHidden()
{
document.getElementById("Hidden1").value = "javascript set value";
}
</script>
//访问隐藏字段的值
protected void btnCallJavaScript_Click(object sender, EventArgs e)
{
//必须将Hidden放在Form中
Response.Write(Hidden1.Value);
}
//创建对象绑定控件
protected void Page_Load(object sender, EventArgs e)
{
//创建字典对象
Dictionary<string,string> colorDict = new Dictionary<string,string>();
colorDict.Add("red","红色"); //添加字典项
colorDict.Add("blue", "蓝色");
colorDict.Add("green", "绿色");
colorDict.Add("yellow", "黄色");
Repeater1.DataSource = colorDict;//将字典对象绑定到Repeater
Repeater1.DataBind();
}
//创建字典对象
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate><table></HeaderTemplate>
<ItemTemplate>
<tr>
<td>
<%# Eval("Key") %>
</td>
<td>
<%# Eval("Value") %>
</td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
非常感谢您的回复 我想用wpf(c/s) javascript 互通
javascript 是其他公司提供的api
关于v8 引擎和python 我之前没了解过 能否再详细点 非常感谢
非常感谢您的回复 我是用wpf(c/s) 客户端 调用javascript 网上的一些方法我也已经看过了
webbrowser 在调用javascript 的时候会产生错误所以还是放弃采用webbrowser
非常感谢您的回复
OpenWebkitSharp 我用没有配置成功 而且引入的文件较多 我只需要实现wpf javascript 互通就行
非常感谢您的回复
OpenWebkitSharp 我用没有配置成功 而且引入的文件较多 我只需要实现wpf javascript 互通就行
所谓的Javascript与C#互通,意思就是你的应用程序作为浏览器,为javascript提供external方法。当使用webbrowsers的时候,使用的是com机制,容易实现,几行代码就行了。使用webkit的时候,由于webkit.net并不提供com机制,需要使用webkit所支持的机制,openwebitsharp实现了该内容,你只需要配置好就行了。除此之外,也可以使用ajax绕过浏览器实现,但是恐怕实现起来的效果和难度比配置一下openwebsharp要难上好多倍。所以不推荐。还有一种办法,应用程序监控htmldocument变化,出现某一特殊数据时获取信息,执行方法。后两种都不是正道。送你一句话:往往那些看起来又苦又难的路,才是真正的捷径。
非常感谢您的回复
OpenWebkitSharp 我用没有配置成功 而且引入的文件较多 我只需要实现wpf javascript 互通就行
所谓的Javascript与C#互通,意思就是你的应用程序作为浏览器,为javascript提供external方法。当使用webbrowsers的时候,使用的是com机制,容易实现,几行代码就行了。使用webkit的时候,由于webkit.net并不提供com机制,需要使用webkit所支持的机制,openwebitsharp实现了该内容,你只需要配置好就行了。除此之外,也可以使用ajax绕过浏览器实现,但是恐怕实现起来的效果和难度比配置一下openwebsharp要难上好多倍。所以不推荐。还有一种办法,应用程序监控htmldocument变化,出现某一特殊数据时获取信息,执行方法。后两种都不是正道。送你一句话:往往那些看起来又苦又难的路,才是真正的捷径。
谢谢大侠 送的话也很不错 我还是配置 openwebsharp 吧
把你的"webbrowser 报错"贴出来。
非常感谢您的回复 我想用wpf(c/s) javascript 互通
javascript 是其他公司提供的api
关于v8 引擎和python 我之前没了解过 能否再详细点 非常感谢
部署个websevrice中转下
使用AjaxMethod可以在客户端异步调用服务端方法,简单地说就是在前台JS里调用后台.cs文件里的方法。
function nodeLoad(node) {
Coolite.AjaxMethods.NodeLoad(node.id, {
success: function (result) {
var data = eval("(" + result + ")");
node.loadNodes(data);
},
failure: function (errorMsg) {
Ext.Msg.alert("错误提示", errorMsg);
}
});
}
</script> /// <summary>
/// 展开一个结点时,加载其所有子节点,返回json给前台
/// </summary>
/// <param name="nodeID"></param>
/// <returns></returns>
[AjaxMethod]
public string NodeLoad(string nodeID)
{
Coolite.Ext.Web.TreeNodeCollection nodes = new Coolite.Ext.Web.TreeNodeCollection();
if (!string.IsNullOrEmpty(nodeID))
{
DataRow[] dr = dtAll.Select("pid='" + nodeID + "'", "gname asc");
Coolite.Ext.Web.AsyncTreeNode childNode;
for (int i = 0; i < dr.Length; i++)
{
childNode = new AsyncTreeNode();
childNode.NodeID = dr[i]["gid"].ToString();
childNode.Text = dr[i]["gname"].ToString(); if (dr[i]["typeid"].ToString() == "网格") //是叶子结点
{
childNode.Checked = ThreeStateBool.False;
childNode.AllowChildren = false;
childNode.Expandable = ThreeStateBool.False;
}
else //是内部结点
{
childNode.Checked = ThreeStateBool.Undefined;
childNode.AllowChildren = true;
childNode.Expandable = ThreeStateBool.True;
}
nodes.Add(childNode);
}
}
return nodes.ToJson();
}
C#编写COM组件用于JS在浏览器内进行交互
]//响应后台事件
function onClickForm(cmd) {
window.external.CallWin(cmd);
}[/code] /// <summary>
/// WebBrowser与后台交互方法
/// </summary>
/// <param name="inStr"></param>
public void CallWin(string inStr)
{
MessageBox.show("js调用");
}我项目里面就是这样用的但是必须放到 WebBrowser或者写成Activex 插件也可以调用 Activex 具体百度上有
还需要引用 这两个哪一个 忘了
[System.Runtime.InteropServices.ComVisibleAttribute(true)][DllImport("user32.dll", EntryPoint = "ShowCursor", CharSet = CharSet.Auto)]