如题,我用WebKit.NET的封装接口软件open-webkit-sharp,在c#的WinForm窗体内嵌入webKitBrowser浏览器控件,
在webKitBrowser内打开htm的页面,页面上内有按钮,我想点击按钮时,用js脚本调用c#的方法函数。
  若使用c#自带的WebBroeser控件内,在htm页面用js脚本调用c#的方法函数,用window.external
可正常调用c#的方法函数。但open-webkit-sharp的webKitBrowser内,window.external调用c#无反应。  说明:因为我htm的页面样式与ie不兼容,不能用c#自带的WebBroeser控件。
请问有人知道webKitBrowser如何实现js脚本调用c#的方法。
另外,传参和返回值如何实现??即SetTitle2方法调用如何实现?htm页面:
<script language="javascript" type="text/javascript">
  function SetValue() {
    var target = document.getElementById("Texthtm2").value;
    window.external.SetValue();
    //var ret = window.external.SetValue(target);
}<button id="BtnSetValue" onclick="ChangeText2()">改变文本</button>
<input id="Texthtm2" type="text"  size="100" />C#:
public void SetTitle()
{
   ......
}public int SetTitle2(string s)
{
   ......
   return 100;
}

解决方案 »

  1.   

    可以调用的,下面是我的调用实例。
    实现功能:点击页面上的某个图片,弹出百度网页
    js代码:
    <img alt="" src="/image/home.png" style="height: 79px; width: 110px" onclick="window.external.Say('www.baidu.com'); return false"/>
    C#代码:
    webKitBrowser.GetScriptManager.ScriptObject = new myClass(webKitBrowser);
    [System.Runtime.InteropServices.ComVisibleAttribute(true)]
        class myClass
        {
            private WebKitBrowser webKitBrowser;
            public myClass(WebKitBrowser webkit)
            {
                this.webKitBrowser = webkit;
            }
            public void Say(string msg)
            {
                webKitBrowser.Navigate(msg);
            }
        }
      

  2.   

    为什么要用js来调用 好奇葩
    在WebBrowser 中 貌似我记得有一个 GetElementByxxx(xxx).Click += 事件 就能绑定事件了
      

  3.   


    人家的网页不支持IE... 
    所以只能用webkit...
    webkit没有GetElementByID(xxx).Click,只有用WebKitbrowser.StringByEvaluatingJavaScriptFromString(@"Document.GetElementsByID(xxx).click()");
      

  4.   

    webKitBrowser.GetScriptManager.ScriptObject = new myClass(webKitBrowser);编译都通不过