相关疑难解决方法(0)

如何在调试时或从JavaScript代码中在DOM节点上查找事件侦听器?

我有一个页面,其中一些事件监听器附加到输入框和选择框.有没有办法找出哪些事件监听器正在观察特定的DOM节点以及哪些事件?

事件附件使用:

  1. 原型的 Event.observe ;
  2. DOM的addEventListener;
  3. 作为元素属性element.onclick.

javascript events dom

805
推荐指数
18
解决办法
49万
查看次数

如何使用Firebug或类似工具调试JavaScript/jQuery事件绑定?

我需要调试一个使用jQuery的Web应用程序来做一些相当复杂和混乱的DOM操作.有一次,某些与特定元素绑定的事件不会被触发,只是停止工作.

如果我有能力编辑应用程序源代码,我会向下钻取并添加一堆Firebug console.log()语句并注释/取消注释代码片段以尝试查明问题.但我们假设我无法编辑应用程序代码,需要使用Firebug或类似工具完全在Firefox中工作.

Firebug非常善于让我导航和操纵DOM.但到目前为止,我还没有弄清楚如何使用Firebug进行事件调试.具体来说,我只想查看在给定时间绑定到特定元素的事件处理程序列表(使用Firebug JavaScript断点来跟踪更改).但是Firebug没有能力看到绑定事件,或者我太笨了而无法找到它.:-)

任何建议或想法?理想情况下,我只想查看和编辑绑定到元素的事件,类似于今天我可以编辑DOM的方式.

javascript jquery firebug event-handling javascript-events

606
推荐指数
10
解决办法
24万
查看次数

有没有任何浏览器实现DOM3 EventListenerList?

答案是2010年3月没有回复:

浏览器EventListenerList实现

我想知道从那以后是否有任何进展.

如果答案仍然没有...任何浏览器可能支持它的任何指示?

browser dom addeventlistener dom-events

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

Twitter Bootstrap.为什么模态事件在JQuery中工作但在纯JS中不起作用?

Twitter Bootstrap模式对话框有一组可用于回调的事件.

这是jQuery中的一个例子:

    $(modalID).on('hidden.bs.modal', function (e) {

        console.log("hidden.bs.modal");
    });
Run Code Online (Sandbox Code Playgroud)

但是,当我将此方法转录为JS时,事件'hidden.bs.modal'不起作用.使用'click'确实有效:

    document.querySelector(modalID).addEventListener('hidden.bs.modal', function(e) {

        console.log("hidden.bs.modal");
    }, false);
Run Code Online (Sandbox Code Playgroud)

这些Bootstrap事件只能用于jQuery吗?为什么?

谢谢,
道格

javascript jquery twitter-bootstrap-3

21
推荐指数
2
解决办法
4050
查看次数

克隆元素及其所有事件

我正在页面中克隆一个textarea,但克隆的元素没有任何主要元素的事件,有没有办法克隆克隆元素中的所有事件?

var dupNode = node.cloneNode(deep);
Run Code Online (Sandbox Code Playgroud)

javascript clonenode javascript-events

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

“未捕获的引用错误:未定义 getEventListeners”

我正在尝试删除监听器。在控制台中,下面的代码正在运行。当我在 Chrome 扩展中使用代码时,我得到:“Uncaught ReferenceError:getEventListeners 未定义”。为什么会出现这种情况?是否有与“getEventListeners”功能等效的函数?

document.addEventListener('click', fireContentLoadedEvent, false);

function fireContentLoadedEvent () {
    console.log ("DOMContentLoaded");
    for (let i = 0; i < document.getElementsByClassName("someClass").length; i++) {
        plusButton = document.getElementsByClassName("someClass")[i]

        if ( getEventListeners(plusButton)["click"].length > 1) {

            plusButton.removeEventListener("click", getEventListeners(plusButton).click[1].listener);

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

javascript google-chrome google-chrome-extension referenceerror google-chrome-devtools

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

用addEventListener存储的事件在哪里存储?

我从一个空页开始.如果我跑,document.body.onclick我得到null.如果我应用以下代码:

document.body.onclick = function() { return "Click"; };
Run Code Online (Sandbox Code Playgroud)

我得到的function() { return "Click"; },当我运行document.body.onclick.那讲得通!但是当我跑步的时候

document.body.addEventListener("click", function() { return "Click"; });
Run Code Online (Sandbox Code Playgroud)

document.body.onclick仍然null,但输出是"Click"我跑的时候document.body.click().

所以我的问题是,使用时存储的功能在addEventListener哪里?

javascript

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

等待处理程序注册 - selenium

有一个带有按钮的 html 页面,我的 selenium 测试正在测试,当单击按钮时执行了一个操作。

问题是,看起来点击发生在执行 javascript 之前 - 在处理程序绑定到页面之前。结果是,selenium 测试将单击按钮,但不会发生任何操作。

我可以通过反复尝试单击然后观察是否发生了所需的操作来解决此问题(通常页面上存在某些元素)。我想听听有一些更优雅的解决方案......

selenium

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

在Firefox开发人员工具中查看DOM事件('ev'标记事物),如何?

Firefox的Inspector可以列出从Firefox 33 连接到特定DOM节点的所有事件监听器.

示例页面:

<!doctype html>
<body>
    <button id="Btn">Test</button>
    <script>
        function TestEventListener(e){
            console.log("handle event");
        }
        var btn = document.querySelector("#Btn");
        if(btn){
            btn.addEventListener("click",TestEventListener,false);
        }
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

然后按F12并选择Inspector,单击ev旁边的小标签<button>. 在此输入图像描述

  • Firefox是如何做到的?
  • Firefox addEventListener从一开始就被修改了吗?
  • 这可以用原生Javascript完成吗?

    像这样:

    function GetDOMEventList(node){
        var listenerFunctionsList = [];
        [Magic Moves]
        return listenerFunctionsList; // [func1, func2, func3...]
    }
    
    Run Code Online (Sandbox Code Playgroud)

javascript firefox events event-listener

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

如何在2019年使用vanilla JS获取元素的事件监听器列表

在Stackoverflow上还有其他几个主题在寻找相同的东西,尽管没有一个有答案,而且大多数都非常非常老.

所以,我们从2019年开始的几天,我们有ES6和浏览器有很长的路要走.我们现在终于有了解决方案吗?

笔记:

  • 没有jQuery(没有$ __数据),解决方案必须使用addEventListener直接绑定的事件
  • 没有devtools解决方案没有Chrome插件,没有getEventListeners()控制台.标准编码.
  • 没有"黑客" addEventListener()注册电话.

这种一厢情愿的想法或浏览器终于​​在现代提供了这些信息吗?

javascript listener javascript-events addeventlistener

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

如何从文档和窗口中删除JavaScript touch事件处理程序?

我有一个显示FullCalendar日历的网页

日历将托管在公共Salesforce社区页面中.

我希望能够使用touch和通过移动设备在日历中创建活动drag.

Salesforce Communities和FullCalendar都支持移动设备.

FullCalendar有触控支持

但是当我使用移动设备访问社区页面时,我无法使用touchdrag创建日历条目.

touch通过Salesforce的社区页面/框架创建的事件处理程序:

  • documentfor touchstarttouchendandtouchcancel
  • window 对于 touchmove

这似乎覆盖了FullCalendar touch事件.

以下是调试的示例日历:

我怎样才能删除touch的事件处理程序documentwindow

我试过添加:

    document.addEventListener("touchstart", function (event) {
        event.preventDefault();
        console.log("touchstart: event.preventDefault()");
    }, false);

    document.addEventListener("touchend", function (event) {
        event.preventDefault();
        console.log("touchend: event.preventDefault()");
    }, false);

    document.addEventListener("touchcancel", function (event) {
        event.preventDefault();
        console.log("touchcancel: event.preventDefault()");
    }, false);

    window.addEventListener("touchmove", function (event) {
        event.preventDefault();
        console.log("touchmove: …
Run Code Online (Sandbox Code Playgroud)

javascript event-listener touch fullcalendar removeeventlistener

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