gpt4 book ai didi

button - dart MouseEvent toElement null

转载 作者:行者123 更新时间:2023-12-03 04:31:30 25 4
gpt4 key购买 nike

在我的程序中,我在HTML表格内生成按钮,每个按钮都定义了相同的onClick.listen侦听器。

在侦听器中,MouseEvent event.toElement为null。

该表是用HTML预先创建的,但是表行,行单元格和单元格中的按钮都是用dart生成的。

为什么event.toElement可以为null?

如果我尝试一个干净的示例应用程序(dart编辑器中的新Web应用程序)并创建一个按钮,请将其添加到div中,则event.toElement不为null。

所以我有一个普遍的问题:当监听按钮的onClick事件,然后接收MouseEvent时,什么会导致MouseEvent的toElement属性为null?

编译为JS后,我正在浏览器(chrome和firefox)中运行它。

编辑:
在HTML文件中,我直接链接了已编译的JS脚本。
现在,我更改了链接dart脚本和pakcages / browser / dart.js的链接(与sameple dart网络应用程序一样)。进行此更改后,它在Chrome和chrome中可以正常工作(event.toElement!= null),但在Firefox中则不能。 Firefox仍然具有event.toElement == null
该怎么办??

CODE:
HTML:

<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div id="sample_container_id">
<p id="sample_text_id"></p>
</div>
<script type="application/dart" src="button_event.dart"></script>
<script src="packages/browser/dart.js"></script>
</body>
</html>

DART:
import 'dart:html';

void main() {

ButtonElement b = new ButtonElement();
b.text = 'Press Me';
b.id = 'button_id';
b.onClick.listen(onMarketButtonClick);
querySelector('#sample_container_id').append(b);
}

void onMarketButtonClick(MouseEvent _event) {
querySelector('#sample_text_id').text = _event.toElement.toString();
}

结果:
在Chrome中,点击按钮会输出“按钮”
在FireFox中,单击按钮将输出“null”

使用案例:
在回调(onMarketButtonClick)中,我想检索被单击的按钮的ID和自定义属性,这样我就可以确定单击了哪个按钮。
想象一个计算器应用程序。不同编号的按钮具有不同的inner-html和不同的自定义属性和/或ID。但是所有的都具有相同的onClick侦听器。
调用侦听器时,我需要确定单击了哪个号码。所以我需要访问ButtonElement及其自定义属性以及id和内部html等。
(自定义属性用于比计算器更复杂的用例)

非常感谢,
伊姆兰

最佳答案

Firefox属性称为relatedEvent。使用它,您将不会获得null

我仍然不确定用例,但是根据您想要的信息,您可能只需要使用currentTargettarget:

querySelector('#sample_text_id').text = _event.currentTarget.toString();
querySelector('#sample_text_id').text = _event.target.toString();

关于button - dart MouseEvent toElement null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20455557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com