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

时间:2016-10-21 06:00:45

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

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

单击按钮时,也会在页面init和pag load两次调用click事件。该按钮具有句柄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

1 个答案:

答案 0 :(得分:0)

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