使用invokescript将bool值从javascript传递到c#

本文关键字:javascript 值从 invokescript bool 使用 | 更新日期: 2023-09-27 18:19:35

我有这个代码:

private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
    {
        bool isEditing = (bool)webBrowser1.Document.InvokeScript("isEditing");
        MessageBox.Show("End");
        e.Cancel = false;
    }

程序不会关闭,也不会到达MessageBox.Show("End");。取出线路bool isEditing = (bool)webBrowser1.Document.InvokeScript("isEditing");使其工作(程序退出)。

isEditing是一个javascript函数,它看起来像这样:

function isEditing(){ return editing; } // editing being either true or false

我不知道如何通过c#中的调试控制台获得任何错误消息(尽管如果有人想给我指明正确的方向,我可以回来发布)。

我最终想做的是有一个脚本,如果我在网络浏览器中编辑,它可以阻止表单关闭。(但我似乎无法到达第一行!)

我做错了吗?如果是这样,那它怎么了?

感谢

使用invokescript将bool值从javascript传递到c#

请注意,如果InvokeScript()调用引发异常(例如,如果不存在isEditing),则该异常将被表单捕获,关闭请求将中止。

这也许可以解释为什么你的代码永远不会到达MessageBox.Show("End");,也不会关闭表单

您应该能够在Visual Studio的"输出窗口"中看到任何捕获的异常信息,或者您可以通过转到Debug->Exceptions菜单并选中"公共语言运行时异常"选项来强制Visual Studio中断任何异常。