我需要调试一个使用jQuery的Web应用程序来做一些相当复杂和混乱的DOM操作.有一次,某些与特定元素绑定的事件不会被触发,只是停止工作.
如果我有能力编辑应用程序源代码,我会向下钻取并添加一堆Firebug console.log()
语句并注释/取消注释代码片段以尝试查明问题.但我们假设我无法编辑应用程序代码,需要使用Firebug或类似工具完全在Firefox中工作.
Firebug非常善于让我导航和操纵DOM.但到目前为止,我还没有弄清楚如何使用Firebug进行事件调试.具体来说,我只想查看在给定时间绑定到特定元素的事件处理程序列表(使用Firebug JavaScript断点来跟踪更改).但是Firebug没有能力看到绑定事件,或者我太笨了而无法找到它.:-)
任何建议或想法?理想情况下,我只想查看和编辑绑定到元素的事件,类似于今天我可以编辑DOM的方式.
有没有办法查看哪些函数/代码附加到DOM元素的任何事件?使用Firebug或任何其他工具.
我已经看过这些问题:
但是,他们都没有回答如何使用连接到节点的事件侦听器列表addEventListener
,而无需addEventListener
在创建事件侦听器之前修改原型.
VisualEvent不会显示所有事件侦听器(特定于iPhone的事件),我想以编程方式(稍微)执行此操作.
试图在线搜索,但看起来我不能正确地制定搜索查询.
听起来很简单,我怎么能用jquery或javascript列出所有附加到元素/文档/窗口或存在于dom中的处理程序或事件监听器.
就是想.
先感谢您.
只是提问:有没有办法彻底删除对象的所有事件,例如div?
编辑:我正在添加div.addEventListener('click',eventReturner(),false);
一个事件.
function eventReturner() {
return function() {
dosomething();
};
}
Run Code Online (Sandbox Code Playgroud)
EDIT2:我找到了一种方法,但是不能用于我的情况:
var returnedFunction;
function addit() {
var div = document.getElementById('div');
returnedFunction = eventReturner();
div.addEventListener('click',returnedFunction,false); //You HAVE to take here a var and not the direct call to eventReturner(), because the function address must be the same, and it would change, if the function was called again.
}
function removeit() {
var div = document.getElementById('div');
div.removeEventListener('click',returnedFunction,false);
}
Run Code Online (Sandbox Code Playgroud) 如何检测Android WebView是否消耗了触摸事件?onTouchEvent
始终返回true和WebViewClient
的onUnhandledInputEvent
永远不会触发.
我在TwoDScrollView中有多个WebView.顾名思义,TwoDScrollView可以垂直和水平滚动.TwoDScrollView的内容可以放大/缩小.当用户拖动手指或使用双指缩放时,我想将触摸事件发送到:
我通过使用canScrollHorizontally
和canScrollVertically
方法部分实现了这一点.但这些方法仅适用于"原生滚动".但是,在某些情况下,WebView中的某些JavaScript会消耗触摸事件,例如Google Maps.在这种情况下,方法返回false.有没有办法找出WebView的内容是否消耗触摸事件,即可滚动/可缩放?我无法更改WebView的内容,因此我的问题与此不同.
我已经考虑通过evaluateJavaScript
方法在Webview中执行一些JavaScript来检查触摸处理程序,但根据这个答案,没有简单的方法来实现这一点,并且页面也可以有一些其他嵌套的iframe.任何帮助将不胜感激.
onTouchEvent
并读取super.onTouchEvent()
哪些内容始终返回true.canScrollHorizontally
canScrollVertically
如上所述,只能部分解决这个问题onScrollChanged
也没用WebViewClient.onUnhandledInputEvent
永远不会被触发evaluateJavaScript
,但这是一个非常复杂和丑陋的解决方案Debug.startMethodTracing
.我发现它传播如下:
android.webkit.WebView.onTouchEvent
com.android.webview.chromium.WebViewChromium.onTouchEvent
com.android.org.chromium.android_webview.AwContents.onTouchEvent
com.android.org.chromium.android_webview.AwContents$AwViewMethodsImpl.onTouchEvent
com.android.org.chromium.content.browser.ContentViewCore.onTouchEventImpl
nativeOnTouchEvent
,我不知道它会发生什么.无论如何,onTouchEvent
总是返回true,即使有可能在某处发现事件是否被消耗,它也需要使用非常丑陋的私有方法.我不需要知道如何拦截发送到WebView的触摸事件,但WebView是否正在使用它们,即是否正在使用它们执行任何操作,例如滚动,拖动等.
我想使用JavaScript模拟页面上任何链接的点击.如果该链接具有与其"onclick"事件绑定的某些功能(由任何其他JS我没有任何控制),则必须调用该函数,否则链接应以正常方式运行并打开新页面.
我不确定只检查'onclick'处理程序的值就足够了.我想构建它,以便它适用于任何链接元素.
我无法使用任何JS库(不一定是jQuery)或简单地使用JavaScript来控制可能绑定到链接的onclick事件的函数.
编辑:在下面的答案的帮助下,看起来可以检查使用jQuery附加的事件处理程序或使用该onclick
属性.如何检查使用addEventListener
/任何其他JS库附加的事件处理程序,以便它是万无一失的?
我正在查看Bing Maps网站.我打开了我的位置编辑器并单击绘图工具栏中的折线工具.
我想发现当我点击绘图工具栏中的工具时javascript运行的是什么.
我查看了html,并且onclick
元素上没有声明事件.
我已经对页面引用的所有脚本进行了文本搜索,以获取折线工具元素的ID.这是为了尝试找到将click事件附加到元素的javascript,但我根本没有匹配.
单击工具时必须运行一些脚本.当我单击工具栏中的工具div时,如何找出正在执行的脚本?
如果我不首先知道要设置它们的脚本,我认为无论如何我都可以设置断点.无论如何,我可以捕获运行的javascript来发现它是什么,在IE F12开发人员工具或firebug中?
在检查页面的DOM时,我想快速了解元素的附加事件
例如,如果按钮具有此HTML DOM
<button id="button1">Click Me</button>
Run Code Online (Sandbox Code Playgroud)
在某个地方(不是我提前知道的地方)它附有一个事件,例如
$("#button1").click(function(){...});
Run Code Online (Sandbox Code Playgroud)
我知道它可以以编程方式完成(我可以使用jQuery查找绑定在元素上的事件吗?)
但有没有办法只使用Chrome/Firefox/IE的开发者工具之一来查看事件列表?
更新:我发现在较新的Chrome版本中我有一个名为EventListeners的标签,但它似乎不允许轻松向下钻取到事件源,因为jQuery包装了原始
jquery firebug javascript-events ie-developer-tools google-chrome-devtools
可以将Javascript事件绑定到html元素,而无需使用内联声明.
检查html元素是否有办法知道哪些事件绑定到元素?我想知道开发人员定义的事件,而不是浏览器附带的内部事件.
因此,如果我将鼠标悬停在元素上并显示菜单,我想知道哪种方法导致了它.
我一直在使用代码检查器尝试事件间谍,但它记录了太多的内部代码,除非我没有正确使用它.
javascript ×8
jquery ×4
dom-events ×2
events ×2
firebug ×2
android ×1
dom ×1
firefox ×1
onclick ×1
webview ×1