相关疑难解决方法(0)

JavaScript:删除事件侦听器

我正在尝试删除侦听器定义中的事件侦听器:

canvas.addEventListener('click', function(event) {
    click++;
    if(click == 50) {
        // remove this event listener here!
    }
// More code here ...
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?这=事件......谢谢.

javascript events event-handling listener

118
推荐指数
7
解决办法
20万
查看次数

使用纯javascript在mousedown上运行mousemove的最佳方法是什么?

我不希望mousemove事件发生任何不必要的循环.所以我对性能/最佳实践感兴趣,什么mousemove才是最好的运行方式mousedown == true呢?目前我正在使用:

var pressedMouse = false;

myObject.addEventListener("mousedown", function(e){

    mouseDownFunction(e); 
    pressedMouse = true;

    myObject.onmousemove = function(e) {
        if(pressedMouse == true){
            mouseMoveFunction(e);
        }
     }
});

myObject.addEventListener("mouseup", function(e){
    pressedMouse = false;
});
Run Code Online (Sandbox Code Playgroud)

mouseMoveFunction()因为pressedMouse变量而没有被调用.可onmousemove事件从如果触发防止mousedown不用呢?

javascript events mousemove mousedown

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

删除 Typescript 的事件侦听器不起作用

import { SMS } from '@ionic-native/sms';在我的 ionic 3 聊天应用程序中尝试过。但document.removeEventListener('onSMSArrive');不工作。

这是我正在使用的软件包

"@ionic-native/sms": "^4.3.0",
"@ionic-native/core": "^4.3.0",
"cordova-sms-plugin": "^0.1.11",
Run Code Online (Sandbox Code Playgroud)

问题是,当我第一次访问我的页面时,它工作正常,并且当我收到手机短信时收到消息。但是,如果我返回另一个页面并返回该页面,我会在函数中收到两次相同的消息。我认为事件监听器没有删除,当我再次导航到该页面时,另一个监听器正在添加到文档中。

这是我的代码

我在页面加载时添加事件侦听器,并在页面卸载时删除它。

public ionViewWillEnter() {
    this.smsService.startMessageListner();
}

public ionViewWillLeave() {
    this.smsService.stopMessageListner();
}
Run Code Online (Sandbox Code Playgroud)

这是我服务中的startMessageListner()和功能。stopMessageListner()

public startMessageListner()
{
    --- some works do here ---
    this.startListner();
}

public startListner()
{
    this.recieveMessage().then((message) => {
        --- receives message here and when after 
            navigating multiple times I receives 
            multiple same messages here---
    }
}

public recieveMessage() {

    if (!window.SMS) { …
Run Code Online (Sandbox Code Playgroud)

event-listener typescript cordova-plugins ionic-native ionic3

4
推荐指数
1
解决办法
4389
查看次数

Hammer.js无法删除事件监听器

我像这样创建一个锤子实例:

var el = document.getElementById("el");
var hammertime = Hammer(el);
Run Code Online (Sandbox Code Playgroud)

然后我可以添加一个监听器:

hammertime.on("touch", function(e) {
    console.log(e.gesture);
}
Run Code Online (Sandbox Code Playgroud)

但是我无法删除此侦听器,因为以下内容不执行任何操作:

hammertime.off("touch");
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?如何摆脱锤子听众?hammer.js文档目前很差,所以除了存在方法.on()和事物之外什么都没解释.off().我不能使用jQuery版本,因为这是一个性能关键的应用程序.

JSFiddle展示这个:http://jsfiddle.net/LSrgh/1/

javascript hammer.js

2
推荐指数
1
解决办法
6158
查看次数

Javascript removeEventListener OnDestroy 在 Angular 6 中不起作用

我试图removeEventListener在我的角度组件中: Javascript removeEventListener 不工作

    ...
    ngOnInit() {
        document.addEventListener('visibilitychange', () =>this.handleVisibleState(), true);
    }

    ngOnDestroy() {
        document.removeEventListener('visibilitychange', () => this.handleVisibleState(), true);
    }

    handleVisibleState() {
        let vis = document.visibilityState === 'visible';
        this.configsService.update_collab_visible(vis);
    }
    ...
Run Code Online (Sandbox Code Playgroud)

addEventListener即使在上述作品之后ngOnDestroy ()

如何从角度组件中的文档解除可见性状态?

尝试 2

    private visibilityChangeCallback: () => void;

    ngOnInit() {
        this.visibilityChangeCallback = () => this.handleVisibleState();
        document.addEventListener('visibilitychange', this.handleVisibleState, true);
    }

    ngOnDestroy() {
        document.removeEventListener('visibilitychange', this.handleVisibleState, true);
    }

    handleVisibleState() {
        let vis = document.visibilityState === 'visible';
        console.log(typeof this.configsService); // undefined
        this.configsService.update_collab_visible(vis);
    }
Run Code Online (Sandbox Code Playgroud)

结果:

错误类型错误:无法读取未定义的属性“update_collab_visible”

typescript angular-routing angular

2
推荐指数
1
解决办法
1868
查看次数

React:删除事件侦听器“beforeunload”不起作用

我试图在用户离开页面而不保存时添加提示。

这是我的代码:

    componentDidUpdate() {
        if (!this.props.data.get('is_data_saved')) {
            window.addEventListener('beforeunload', function(e) {
                e.returnValue = 'Data may not be saved'
            }, true);
        } else {
            window.removeEventListener('beforeunload', function(e) {
                e.returnValue = 'Data may not be saved'
            }, true);
            console.log('REMOVED')
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在控制台中得到“已删除”,但即使已保存表单,仍然会弹出提示。是不是因为我把事件监听器放在了错误的组件中?

javascript reactjs

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

在JavaScript中删除事件列表器

我在JavaScript中创建了一个类,它在启动类时执行与特定任务相关的键调用(按键).

类有一个函数'receaveKey',这个函数由addEventListener引用

 document.addEventListener("keypress",this.receaveKey.bind(this));
Run Code Online (Sandbox Code Playgroud)

这适用于我,但我的类有另一个功能"退出"当这个被调用时,我想删除该事件监听器,我尝试了这个,但确实有效.

document.removeEventListener("keypress",this.receaveKey.bind(this));
Run Code Online (Sandbox Code Playgroud)

注意: - 我也试过这个但是有问题我不能给出类的启动对象的引用,因为当使用类的'函数'按键时我也必须做一些任务.

document.addEventListener("keypress",staticClassReceaveKey);

document.removeEventListener("keypress",staticClassReceaveKey);
Run Code Online (Sandbox Code Playgroud)

注意: - 我也试过这个

document.addEventListener("keypress",this.receaveKey);

    document.removeEventListener("keypress",this.receaveKey);
Run Code Online (Sandbox Code Playgroud)

但是当使用类的方法作为引用函数时,没有找到任何运气,因为没有删除监听器

javascript html5

0
推荐指数
1
解决办法
97
查看次数