我有一个页面,其中一些事件监听器附加到输入框和选择框.有没有办法找出哪些事件监听器正在观察特定的DOM节点以及哪些事件?
事件附件使用:
Event.observe ;addEventListener;element.onclick.我需要调试一个使用jQuery的Web应用程序来做一些相当复杂和混乱的DOM操作.有一次,某些与特定元素绑定的事件不会被触发,只是停止工作.
如果我有能力编辑应用程序源代码,我会向下钻取并添加一堆Firebug console.log()语句并注释/取消注释代码片段以尝试查明问题.但我们假设我无法编辑应用程序代码,需要使用Firebug或类似工具完全在Firefox中工作.
Firebug非常善于让我导航和操纵DOM.但到目前为止,我还没有弄清楚如何使用Firebug进行事件调试.具体来说,我只想查看在给定时间绑定到特定元素的事件处理程序列表(使用Firebug JavaScript断点来跟踪更改).但是Firebug没有能力看到绑定事件,或者我太笨了而无法找到它.:-)
任何建议或想法?理想情况下,我只想查看和编辑绑定到元素的事件,类似于今天我可以编辑DOM的方式.
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吗?为什么?
谢谢,
道格
我正在页面中克隆一个textarea,但克隆的元素没有任何主要元素的事件,有没有办法克隆克隆元素中的所有事件?
var dupNode = node.cloneNode(deep);
Run Code Online (Sandbox Code Playgroud) 我正在尝试删除监听器。在控制台中,下面的代码正在运行。当我在 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
我从一个空页开始.如果我跑,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哪里?
有一个带有按钮的 html 页面,我的 selenium 测试正在测试,当单击按钮时执行了一个操作。
问题是,看起来点击发生在执行 javascript 之前 - 在处理程序绑定到页面之前。结果是,selenium 测试将单击按钮,但不会发生任何操作。
我可以通过反复尝试单击然后观察是否发生了所需的操作来解决此问题(通常页面上存在某些元素)。我想听听有一些更优雅的解决方案......
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>.

addEventListener从一开始就被修改了吗?这可以用原生Javascript完成吗?
像这样:
function GetDOMEventList(node){
var listenerFunctionsList = [];
[Magic Moves]
return listenerFunctionsList; // [func1, func2, func3...]
}
Run Code Online (Sandbox Code Playgroud)在Stackoverflow上还有其他几个主题在寻找相同的东西,尽管没有一个有答案,而且大多数都非常非常老.
所以,我们从2019年开始的几天,我们有ES6和浏览器有很长的路要走.我们现在终于有了解决方案吗?
笔记:
addEventListener直接绑定的事件getEventListeners()控制台.标准编码.addEventListener()注册电话.这种一厢情愿的想法或浏览器终于在现代提供了这些信息吗?
我有一个显示FullCalendar日历的网页
日历将托管在公共Salesforce社区页面中.
我希望能够使用touch和通过移动设备在日历中创建活动drag.
Salesforce Communities和FullCalendar都支持移动设备.
但是当我使用移动设备访问社区页面时,我无法使用touch和drag创建日历条目.
有touch通过Salesforce的社区页面/框架创建的事件处理程序:
documentfor touchstart和touchendandtouchcancelwindow 对于 touchmove这似乎覆盖了FullCalendar touch事件.
以下是调试的示例日历:
我怎样才能删除touch的事件处理程序document和window?
我试过添加:
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
javascript ×9
dom ×2
events ×2
jquery ×2
browser ×1
clonenode ×1
dom-events ×1
firebug ×1
firefox ×1
fullcalendar ×1
listener ×1
selenium ×1
touch ×1