C# WinForm webBrowser 内嵌网页的按钮的OnClientClick事件的return false 在webBrowser中绑定onclick事件后 失效 的变通解决办法
2009-03-23 15:50
1271 查看
本示例主题基于如下情况:
网页有一按钮
<asp:Button ID="Button1" OnClientClick="return fnButton1();" runat="server" Text="Button" OnClick="Button1_Click" />
在正常情况下 下面的代码正常执行
<script language="javascript" type="text/javascript">
function fnButton1()
{
if(confirm("是否继续执行?"))
{
return true;
}
else
{
return false;
}
}
</script>
即confirm框 弹出后 根据用户的选择 可正常的继续执行或停止执行按钮的OnClick后台事件
但当该网页被WinForm通过webBrowser访问 并给该网页的Button1增加事件后
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (this.webBrowser1.Document.All["Button1"] != null)
this.webBrowser1.Document.All["Button1"].DetachEventHandler("onclientclick", new EventHandler(Html_Button1_Click));
}
void Html_Button1_Click(object sender, EventArgs e)
{
//...
}
上面的confirm的选择是与否 都会继续执行后台代码及WinForm中的代码
经过相关尝试 可变通的通过如下判断来确定是否执行后台代码及WinForm中的代码
网页中增加多一个javascript函数
<script language="javascript" type="text/javascript">
var IsSubmit = false;
function fnButton1()
{
if(confirm("是否继续?"))
{
IsSubmit = true;
}
else
{
IsSubmit = false;
}
return IsSubmit;
}
function fnButton1ForWebBrowser()
{
return IsSubmit;
}
</script>
WinForm中增加多一步的相关判断
void Html_Button1_Click(object sender, EventArgs e)
{
object result = this.webBrowser1.Document.InvokeScript("fnButton1ForWebBrowser");
if (result.ToString().ToLower() == "true")
{
MessageBox.Show("执行");
//...
}
else
{
MessageBox.Show("不执行");
//...
}
}
网页有一按钮
<asp:Button ID="Button1" OnClientClick="return fnButton1();" runat="server" Text="Button" OnClick="Button1_Click" />
在正常情况下 下面的代码正常执行
<script language="javascript" type="text/javascript">
function fnButton1()
{
if(confirm("是否继续执行?"))
{
return true;
}
else
{
return false;
}
}
</script>
即confirm框 弹出后 根据用户的选择 可正常的继续执行或停止执行按钮的OnClick后台事件
但当该网页被WinForm通过webBrowser访问 并给该网页的Button1增加事件后
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (this.webBrowser1.Document.All["Button1"] != null)
this.webBrowser1.Document.All["Button1"].DetachEventHandler("onclientclick", new EventHandler(Html_Button1_Click));
}
void Html_Button1_Click(object sender, EventArgs e)
{
//...
}
上面的confirm的选择是与否 都会继续执行后台代码及WinForm中的代码
经过相关尝试 可变通的通过如下判断来确定是否执行后台代码及WinForm中的代码
网页中增加多一个javascript函数
<script language="javascript" type="text/javascript">
var IsSubmit = false;
function fnButton1()
{
if(confirm("是否继续?"))
{
IsSubmit = true;
}
else
{
IsSubmit = false;
}
return IsSubmit;
}
function fnButton1ForWebBrowser()
{
return IsSubmit;
}
</script>
WinForm中增加多一步的相关判断
void Html_Button1_Click(object sender, EventArgs e)
{
object result = this.webBrowser1.Document.InvokeScript("fnButton1ForWebBrowser");
if (result.ToString().ToLower() == "true")
{
MessageBox.Show("执行");
//...
}
else
{
MessageBox.Show("不执行");
//...
}
}
相关文章推荐
- C# WinForm webBrowser 内嵌网页的按钮的OnClientClick事件的return false 在webBrowser中绑定onclick事件后 失效 的变通解决办法
- ie中按钮onclick等事件失效。提示提示对象不支持此操作。在谷歌浏览器中又能使用解决办法
- 解决jquery中,使用append增加元素时,该元素的绑定监听事件失效的办法
- C# :Response.End() 后页面按钮等功能全部失效的解决办法
- C#:在WebBrowser控件中阻止alert[警告框],confirm[确认对话框]对话框」及解析网页框架集\触发按钮事件
- React.js在ios设备上onClick事件失效的解决办法
- jquery使用append动态增加元素,该元素绑定事件失效的解决办法
- C#.NET 中按钮点击一次刷新,第二次才会触发按钮事件解决办法
- C# :Response.End() 后页面按钮等功能全部失效的解决办法
- jquery的动态元素绑定事件失效解决办法
- 解决jquery中,使用append增加元素时,该元素的绑定监听事件失效的办法
- C# winform通过按钮上移下移 解决了datasource绑定问题
- iphone上对于动态生成的html元素绑定点击事件$(document).click()失效解决办法
- 关于js动态生成元素,注册(绑定)的事件失效的解决(on)
- C# winform ComboBox绑定数据源时触发SelectedIndexChanged事件的处理
- HTML+CSS 网页中鼠标滚轮失效的解决办法
- UINavigationController 自定义返回按钮导致返回手势失效解决办法
- 带有按钮并且可以执行单击事件的WINFORM窗体,体悟C#的创建过程
- Apple 移动设备绑定动态生成元素点击事件$(document).on('click',element,callback)失效解决方法
- 移动端填坑:ios系统点击事件失效的解决办法