标签: eventhandler

JavaScript事件监听器与事件处理程序

好吧,我一直试图解决这个问题很长一段时间,最后有时间去调查.正如标题所暗示的"有什么区别"?我知道这是我想要的方式.

    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函数中?

html javascript event-listener dom-events eventhandler

13
推荐指数
1
解决办法
1万
查看次数

哪种C#模式具有更好的性能以避免重复的事件处理程序?

避免重复注册事件处理程序基本上有两种模式:(根据此讨论:C#模式防止事件处理程序挂钩两次)

  1. 使用System.Linq命名空间,并通过调用检查事件处理程序是否已注册 GetInvocationList().Contains(MyEventHandlerMethod);

  2. 在注册之前取消注册,如下所示:

    MyEvent -= MyEventHandlerMethod;
    MyEvent += MyEventHandlerMethod;
    
    Run Code Online (Sandbox Code Playgroud)

我的问题是,性能方面,哪一个更好,或者它们在性能上有显着差异?

c# eventhandler

11
推荐指数
2
解决办法
1542
查看次数

从父窗口将事件传递给iframe?(Javascript)

在开始这个问题之前,我不得不说我到处寻找答案,但没有找到答案.还试过像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)

有没有人知道如何解决这个问题?

javascript iframe eventhandler

8
推荐指数
2
解决办法
9438
查看次数

IE 11上的鼠标事件属性未定义

我正在使用以下代码来识别浏览器窗口关闭事件,并在其他浏览器上按预期工作,但不在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

7
推荐指数
1
解决办法
4309
查看次数

JavaFX ContextMenu如何获取被单击的对象?

我正在学习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)

编辑:我希望有一些简单的解决方案(一个班轮),但如果没有,那么有很多复杂的方法可以做到这一点。

javafx contextmenu eventhandler

5
推荐指数
1
解决办法
3026
查看次数

C# SystemEvents.PowerModeChanged 触发得太晚

我想在计算机或笔记本电脑暂停之前捕获 PowerModeChanged 事件。

\n\n

我的代码片段如下:

\n\n
void 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)

c# eventhandler

5
推荐指数
0
解决办法
420
查看次数

Java:允许我的广告资源中的放弃操作?

对于我的游戏,我实施了一个库存系统.单击屏幕时,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)

java events inventory handler eventhandler

5
推荐指数
1
解决办法
76
查看次数

我的类不能用作 .Net 4 中泛型类型或方法“System.EventHandler&lt;TEventArgs&gt;”中的类型参数“TEventArgs”

我试图了解 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)

c# wpf eventargs eventhandler

5
推荐指数
1
解决办法
1908
查看次数

javascript事件处理程序的问题

我希望这不会被标记为"重复",因为我已经审查了几个线程并遵循我发现的建议.我知道我错过了一些简单的东西,需要另外一些眼睛.我是新手,所以请耐心等待.我正在测试一个简单的按钮元素,我有一个单击事件处理程序,但它无法正常工作.它与"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.我感谢任何帮助.

javascript eventhandler

5
推荐指数
1
解决办法
95
查看次数

EditContext OnFieldChanged 报告错误的返回类型

我在 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 来检查我的所有代码。

c# eventhandler blazor blazor-server-side

5
推荐指数
1
解决办法
1862
查看次数