javascript - 按钮单击事件仅在 Edge 浏览器上触发两次

标签 javascript asp.net vb.net microsoft-edge

我在 Microsoft Edge 中的 ASP.NET Web 应用程序遇到了一个奇怪的问题。

单击按钮时,单击事件会在页面初始化和页面加载时被调用两次。该按钮有句柄 btn.ServerClick

这只发生在 Microsoft Edge 上。 Chrome、IE8-IE11、Safari 等其他浏览器工作正常。我使用的是 Microsoft Edge 20.10240.16384.0 和 20.10240.17146.0

大家有遇到过类似的问题吗?是什么原因导致了这个问题?您是如何解决这个问题的?

我重现了这个问题。

这是我的按钮标记代码:

<button id="btn" runat="server">HTML button Save</button>

这是外部 Javascript:

var trigger = new trigger_class();
function trigger_class() {  
}

trigger_class.prototype.postback = function(ctrl_id) {
    __doPostBack(ctrl_id,'');

    return true;
}

var track = new track_class();
function track_class() {
}

track_class.prototype.do_something = function(ctrl_id, ctrl_client_id) {
    //do something
    trigger.postback(ctrl_id);
}   

这是 vb 代码:

Partial Public Class _Default
Inherits System.Web.UI.Page

Protected Sub page_init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
   '-->Set something
End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
      '-->Set something
End Sub

Protected Sub control_prerender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
     Me.btn.Attributes.Item("onclick") = "return track.do_something('" & Me.btn.UniqueID & "', '" & Me.btn.ClientID & "');"

End Sub

Private Sub btn_click(ByVal ao_sender As Object, ByVal ao_event_args As EventArgs) Handles btn.ServerClick
     '--> validate and save
End Sub

End Class

最佳答案

只需使用event.stopPropagation(); 这将在调用下一个触发器之前停止点击的传播

关于javascript - 按钮单击事件仅在 Edge 浏览器上触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40169402/

相关文章:

c# - 从 C# 程序集中执行 JavaScript

c# - 为什么我们使用 HttpContext.Current?

javascript - Visual Studio 单页应用程序集成

c# - 封装 VS 继承——如何使用 protected 函数?

javascript - 通过分页更改表信息

javascript - CSS - 触摸屏放大时更改背景网址

javascript - 如何在 Controller 中 $inject 动态依赖

将日期转换为长格式时出现javascript错误

javascript - 获取 attr 表单 <a href>

.net - VB.NET 项目属性命名空间与导入语句?