文山文山市网站建设网站建设应列入啥费用
日前项目上遇到需要调用一个第三方的监控接口,给对方参数后,会返回一个url地址,我方系统需要根据用户在网页上点击的不同按钮,要求如下:在打开违规提醒窗口时,需要注册Callback方法(含一个字符串类型 的入参)到浏览器组件中。在该方法中,判断接收入参为“goBackEdit”, 则关闭本窗口,操作员可以继续修改之前录入的内容,修改完成后可以再 次提交审核;当接收入参为“goOn”,则关闭本窗口
触发后续不同的逻辑处理,比如停止/继续,经过网上搜索写了一个调用demo代码如下:
1:新建BrowserCallback.cs文件:// 定义一个COM可见的类,用于处理JavaScript调用
// 定义一个COM可见的类,用于处理JavaScript调用
[ComVisible(true)]
public class BrowserCallback
{private readonly Form _hostForm;public event Action<string> GetWebActionHandler;public BrowserCallback(Form hostForm){_hostForm = hostForm;}// JavaScript可调用的方法 public void HandleAction(string action){// 确保在UI线程执行 if (_hostForm.InvokeRequired){_hostForm.Invoke(new Action(() => HandleAction(action)));return;}// 关闭当前窗口 _hostForm.Close();//将网页上获取到的对于违规提醒窗的处理值:action传递给GetWebActionHandler事件处理程序GetWebActionHandler(action);}
}
2:新建一个模式弹框,要集成webBrowser显示接口返回的url:
public partial class FormWebBrower : Form
{public bool goOn = false;public FormWebBrower(string url){InitializeComponent();InitializeBrowser(url);}private void InitializeBrowser(string url){// 步骤2:初始化浏览器控件 var browser = new WebBrowser{Dock = DockStyle.Fill,ScriptErrorsSuppressed = true //避免脚本错误弹窗};Controls.Add(browser);BrowserCallback callback = new BrowserCallback(this);callback.GetWebActionHandler += GetWebAction;// 步骤3:注册回调对象 browser.ObjectForScripting = callback;// 步骤4:加载包含回调的网页 //browser.Navigate(url);// 或加载本地HTML browser.DocumentText = @"<html><body><button onclick='window.external.HandleAction(""goBackEdit"")'> 返回修改 </button><button onclick='window.external.HandleAction(""goOn"")'> 继续 </button></body></html>";}/// <summary>/// 在打开违规提醒窗口后,获取用户对于违规点击继续按钮,会触发此方法/// </summary>/// <param name="obj"></param>private void GetWebAction(string obj){//MessageBox.Show("回调成功,参数为:" + obj);if (obj == "goOn"){goOn = true;}}
3.现在我们开始模拟调用:
//注意,这里给的地址只是提示作用,在第2段代码中,有模拟html的代码,用那个就可以测试
FormWebBrower f2 = new FormWebBrower("接口返回的url地址");f2.ShowDialog();if(f2.goOn){MessageBox.Show("可以继续操作");}else{MessageBox.Show("★警告:不可以继续操作");}
现在,运行结果如下:(这里给的地址只是提示作用,在第2段代码中,有模拟html的代码,用那个就可以测试)