好吧,我一直试图解决这个问题很长一段时间,最后有时间去调查.正如标题所暗示的"有什么区别"?我知道这是我想要的方式.
addLoadEvent(converter);
// Converter
function converter() {
var pixels = document.getElementById("pixels");
pixels.addEventListener("keyup", updateNode, true);
pixels.addEventListener("keydown", updateNode, true);
}
Run Code Online (Sandbox Code Playgroud)
但这不会,只运行一次.
addLoadEvent(converter);
// Converter
function converter() {
var pixels = document.getElementById("pixels");
pixels.onkeydown = updateNode;
pixels.onkeyup = updateNode;
}
Run Code Online (Sandbox Code Playgroud)
我缺少的是什么...有什么区别?任何指向该主题的链接都会有所帮助.
我的假设是处理程序应该像监听器一样,但事实并非如此.实际上是否需要将监听器添加到addLoadEvent函数中?
避免重复注册事件处理程序基本上有两种模式:(根据此讨论:C#模式防止事件处理程序挂钩两次)
使用System.Linq命名空间,并通过调用检查事件处理程序是否已注册 GetInvocationList().Contains(MyEventHandlerMethod);
在注册之前取消注册,如下所示:
MyEvent -= MyEventHandlerMethod;
MyEvent += MyEventHandlerMethod;
Run Code Online (Sandbox Code Playgroud)我的问题是,性能方面,哪一个更好,或者它们在性能上有显着差异?
在开始这个问题之前,我不得不说我到处寻找答案,但没有找到答案.还试过像dispatchevent,postmessage,......但没有任何效果.
情况就是这样.
我有一个主窗口,我有4个简单的按钮,如downarrow,uparrow,左右箭头.我想创建一个事件模拟传递给这个主窗口中的iframe.
因为iframe是一个加载的页面,其中是一个Eventhandler并对箭头作出反应.
我试过以下但没有奏效
var event = document.createEvent('KeyboardEvent'); // create a key event define the event
event.initKeyboardEvent("keypress", // typeArg,
true, // canBubbleArg,
true, // cancelableArg,
null, // viewArg, Specifies UIEvent.view. This value may be null.
false, // ctrlKeyArg,
false, // altKeyArg,
false, // shiftKeyArg,
false, // metaKeyArg,
39, // keyCodeArg (39 is the right arrow key ),
0); // charCodeArg);
document.getElementById('vid').dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
有没有人知道如何解决这个问题?
我正在使用以下代码来识别浏览器窗口关闭事件,并在其他浏览器上按预期工作,但不在IE11上.由于这行代码undefined只给我IE11 alert(event.clientY+":"+event.clientX);.任何人都可以建议解决这个问题.
window.onbeforeunload = function(event)
{
event= window.event|| event;
alert(event);
alert(event.clientY+":"+event.clientX);
if(event.clientX <0 || event.clientY < 0)
{
// ajax call to server to nullify the session.
window.close();
}
};
Run Code Online (Sandbox Code Playgroud) javascript debugging window internet-explorer-11 eventhandler
我正在学习javafx.scene.control.ContextMenu,现在我遇到了一个问题:
如何从EventHandler获取单击的对象?event.source()和event.target()均返回MenuItem。
让我用一个例子来解释:我应该在函数句柄里面写什么?
TextField text = new TextField();
Label label1 = new Label("hello");
Label label2 = new Label("world");
Label label3 = new Label("java");
ContextMenu menu = new ContextMenu();
MenuItem item = new MenuItem("copy to text field");
menu.getItems().add(item);
item.setOnAction(new EventHandler(){
public void handle(Event event) {
//I want to copy the text of the Label I clicked to TextField
event.consume();
}
});
label1.setContextMenu(menu);
label2.setContextMenu(menu);
label3.setContextMenu(menu);
Run Code Online (Sandbox Code Playgroud)
编辑:我希望有一些简单的解决方案(一个班轮),但如果没有,那么有很多复杂的方法可以做到这一点。
我想在计算机或笔记本电脑暂停之前捕获 PowerModeChanged 事件。
\n\n我的代码片段如下:
\n\nvoid SystemEvents_OnPowerChanged(object sender, PowerModeChangedEventArgs e)\n {\n string fileName = DateTime.Today.ToString("yyyy-MM-dd") + ".txt"; //Den aktuellen Tag ermittlen\n string time = DateTime.Now.ToString("HH:mm:ss"); //Die Zeit beim Eintreten des Events ermitteln \n\n switch (e.Mode) //Event abfangen\n {\n case PowerModes.Resume: //Das Betriebssystem steht unmittelbar davor, aus dem Ruhezustand fortgesetzt zu werden, ...\n\n LogToFile(fileName, " - " + time + " -> Pause."); //... sodass die Pause beendet ist.\n lblStatus.Text = "Arbeit, Arbeit! :)";\n break;\n\n case PowerModes.Suspend: //Die Ausf\xc3\xbchrung …Run Code Online (Sandbox Code Playgroud) 对于我的游戏,我实施了一个库存系统.单击屏幕时,a MousePressedEvent将通过layers游戏中的所有对象传递给所有继承EventListener(My EventListener)的对象.该EventListener级工作正常,并使用它,如下图所示,我已经成功地让我的库存,这样你可以删除一个槽物品,将它们放回.然而,我想要做的是能够将它们从任何包含项目的插槽中取出,并将它们放在任何其他插槽中(只要目标插槽为空).我认为我所拥有的将允许这样做,因为在if声明中我没有检查如果选择了插槽,我将其添加到插槽中.但这实际上并不奏效.有任何想法吗?
Slot.java课堂代码:
public boolean onMousePressed(MousePressedEvent e) {
Point p = new Point(Mouse.getX(), Mouse.getY());
if (!this.getBounds().contains(p)) return false;
boolean left = (e.getButton() == MouseEvent.BUTTON1);
boolean right = (e.getButton() == MouseEvent.BUTTON3);
boolean hasItems = (items.size() > 0);
if (this.getBounds().contains(p)){
if (right && !selected && hasItems){
select(true);
s = new Slot(new Vector2i(Mouse.getX(), Mouse.getY()));
addComponent(s);
s.add(items.get(0));
remove(items.get(items.size() - 1));
} else if (right && selected){
s.add(items.get(0));
remove(items.get(items.size() - 1));
if (items.size() …Run Code Online (Sandbox Code Playgroud) 我试图了解 EventHandler 并且必须使用通知项目。这是项目的链接: https ://codeload.github.com/mike-eason/WPF_ToastNotifications/zip/master
我所做的只是将 .Net-framework 从 4.5 更改为 4
我遇到了这个错误:
我的类不能用作泛型类型或方法“System.EventHandler”中的类型参数“TEventArgs”
ToastNotification类:
[TemplatePart(Name = "PART_DismissButton", Type = typeof(Button))]
public class ToastNotification : ContentControl
{
public event EventHandler Dismissed;
public string Title
{
get { return (string)GetValue(TitleProperty); }
set { SetValue(TitleProperty, value); }
}
public static readonly DependencyProperty TitleProperty =
DependencyProperty.Register("Title", typeof(string), typeof(ToastNotification));
public string Message
{
get { return (string)GetValue(MessageProperty); }
set { SetValue(MessageProperty, value); }
}
public static readonly DependencyProperty MessageProperty =
DependencyProperty.Register("Message", typeof(string), typeof(ToastNotification));
public …Run Code Online (Sandbox Code Playgroud) 我希望这不会被标记为"重复",因为我已经审查了几个线程并遵循我发现的建议.我知道我错过了一些简单的东西,需要另外一些眼睛.我是新手,所以请耐心等待.我正在测试一个简单的按钮元素,我有一个单击事件处理程序,但它无法正常工作.它与"onclick"内联工作,但我试图避免这种情况.简单的html:
<div>
<button id='handler'>Event</button>
</div>
<div id='stringText'>
<h4>Some Description</h4>
<p>
Some more information
</p>
</div>
Run Code Online (Sandbox Code Playgroud)
和javascript:
<script>
document.getElementById("handler").addEventListener("click", display, true);
function display() {
if (document.getElementById("stringText").style.display === "block") {
document.getElementById("stringText").style.display = "none";
} else {
document.getElementById("stringText").style.display = "block";
}
};
</script>
Run Code Online (Sandbox Code Playgroud)
我有最初将"stringText"显示为"none"的css.我感谢任何帮助.
我在 razor 文件中有以下 3 种方法
protected override async Task OnInitializedAsync()
{
EditContext = new EditContext(_projectModel);
EditContext.OnFieldChanged += EditContext_OnFieldChanged;
}
private async Task EditContext_OnFieldChanged(object sender, FieldChangedEventArgs e)
{
await SetOkDisabledStatus();
}
Run Code Online (Sandbox Code Playgroud)
这个方法是一个异步方法,我必须在调用它的任何地方等待它
private async Task SetOkDisabledStatus()
{
if (EditContext.Validate())
{
OkayDisabled = null;
await JsRuntime.InvokeVoidAsync("Animate");
}
else
{
OkayDisabled = "disabled";
}
}
Run Code Online (Sandbox Code Playgroud)
我正在 Blazor 服务器应用程序中使用 EditContext 进行验证。
我在 OnInitializedAsync() 方法下面的这一行收到错误消息,但不知道如何继续处理。
EditContext.OnFieldChanged += EditContext_OnFieldChanged;
Run Code Online (Sandbox Code Playgroud)
错误信息:
任务 MyProject.EditContext_OnFieldChanged(object, FieldChangedEventArgs)' 的返回类型错误。
需要一个带有 void EditContext_OnFieldChanged(object?, FieldChangedEventArgs e) 的方法
请注意,我正在使用 sonarqube 来检查我的所有代码。
eventhandler ×10
c# ×4
javascript ×4
blazor ×1
contextmenu ×1
debugging ×1
dom-events ×1
eventargs ×1
events ×1
handler ×1
html ×1
iframe ×1
inventory ×1
java ×1
javafx ×1
window ×1
wpf ×1