【发布时间】:2023-03-08 20:41:01
【问题描述】:
有没有办法在不使用 addEventListener 或 click="eventHandler()" 的情况下仅通过其在 JavaScript 中的 ID 向元素添加事件侦听器?我依稀记得一种使用元素 id 的方法。
例如,这里有两种方法可以为我不感兴趣的按钮添加事件侦听器:
<input id="myButton" type="button" onclick="doSomething()" />
这是另一个:
myButton.attatchEvent("click", doSomething());
我目前对以上两种方法不感兴趣。我正在寻找的是这样的:
function myButton_clickHandler(event) {
alert("hello world");
}
在上面的代码中,浏览器知道该事件是针对“myButton”的。
我试图弄清楚这一点的原因是为了研究。我记得在 IE 中做过类似的事情。
更新
我做了更多研究,发现它可能是 Microsoft 唯一的一种功能集,在他们的文档中以“隐式事件处理程序”、“”的名称引用基于签名的处理程序”和“AutoEventWireup”。这些示例适用于 ASP.NET。
第一个例子:
为页面事件创建处理程序
在代码编辑器中,创建一个名为 Page_event 的方法。
例如,要为页面的 Load 事件创建处理程序,请创建一个名为 Page_Load 的方法。
注意: 页面事件处理程序不需要像其他控件事件处理程序那样接受参数。
ASP.NET 页面自动将页面事件绑定到名为 Page_event 的方法。此自动绑定由 @Page 指令中的 AutoEventWireup 属性配置,默认设置为 true。如果将 AutoEventWireup 设置为 false,则页面不会自动搜索使用 Page_event 命名约定的方法。
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then
Response.Write("<br>Page has been posted back.")
End If
End Sub
第二个例子:
在 Visual Basic 中隐式添加事件处理程序
在代码编辑器中,创建具有适当签名的事件处理方法。该方法可以任意命名。
使用 Handles 关键字,指定方法应绑定到的控件和事件。
以下代码示例显示了名为 SampleButton 的按钮的 Click 事件的事件处理程序。示例中的方法名为 Clicked。
Protected Sub SampleButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles SampleButton.Click
' Code goes here.
End Sub
【问题讨论】:
-
我从来没有听说过 IE 的这种情况,仅函数名称就允许这样做,尽管您可以将函数分配给将被调用的属性。无论如何,这只是对可用方法的研究还是研究网站(可能是前者,但只是检查)?
-
我同意@Qantas94Heavy - 我从未听说过这样的事情。确定你不考虑 AS3?
-
很确定这不存在。
attatchEvent,也许?或者只是myButton.onclick = function(event) { ... }? -
好吧,我不确定。但我记得我认为我不必添加事件侦听器很奇怪。我不考虑 AS3。 4 天后,它又回到了 Internet Explorer 中。
-
@DoorknobofSnow - 我用正确的方法名称更新了代码示例。
标签: javascript javascript-events