相关疑难解决方法(0)

如何使用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万
查看次数

检查任何DOM元素的附加事件处理程序

有没有办法查看哪些函数/代码附加到DOM元素的任何事件?使用Firebug或任何其他工具.

javascript events

107
推荐指数
5
解决办法
6万
查看次数

使用addEventListener获取附加到节点的事件侦听器

我已经看过这些问题:

但是,他们都没有回答如何使用连接到节点的事件侦听器列表addEventListener,而无需addEventListener在创建事件侦听器之前修改原型.

VisualEvent不会显示所有事件侦听器(特定于iPhone的事件),我想以编程方式(稍微)执行此操作.

javascript dom-events

91
推荐指数
3
解决办法
11万
查看次数

如何检查是否有任何JavaScript事件侦听器/处理程序附加到元素/文档?

试图在线搜索,但看起来我不能正确地制定搜索查询.

听起来很简单,我怎么能用jquery或javascript列出所有附加到元素/文档/窗口或存在于dom中的处理程序或事件监听器.

就是想.

先感谢您.

javascript jquery javascript-events

76
推荐指数
3
解决办法
7万
查看次数

Javascript/DOM:如何删除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)

javascript events dom

73
推荐指数
7
解决办法
9万
查看次数

检查Android WebView是否正在使用触摸事件

精简版

如何检测Android WebView是否消耗了触摸事件?onTouchEvent始终返回true和WebViewClientonUnhandledInputEvent永远不会触发.

详细版本

我在TwoDScrollView中有多个WebView.顾名思义,TwoDScrollView可以垂直和水平滚动.TwoDScrollView的内容可以放大/缩小.当用户拖动手指或使用双指缩放时,我想将触摸事件发送到:

  • WebView,如果其内容可滚动/可缩放(即只有WebView内部将滚动/缩放)
  • 如果上述条件为false,则为TwoDScrollView(TwoDScrollView的所有内容都将滚动/缩放)

我通过使用canScrollHorizontallycanScrollVertically方法部分实现了这一点.但这些方法仅适用于"原生滚动".但是,在某些情况下,WebView中的某些JavaScript会消耗触摸事件,例如Google Maps.在这种情况下,方法返回false.有没有办法找出WebView的内容是否消耗触摸事件,即可滚动/可缩放?我无法更改WebView的内容,因此我的问题与不同.

我已经考虑通过evaluateJavaScript方法在Webview中执行一些JavaScript来检查触摸处理程序,但根据这个答案,没有简单的方法来实现这一点,并且页面也可以有一些其他嵌套的iframe.任何帮助将不胜感激.

我已经尝试过的

  1. 无论如何,我都会覆盖WebView onTouchEvent并读取super.onTouchEvent()哪些内容始终返回true.
  2. canScrollHorizontallycanScrollVertically如上所述,只能部分解决这个问题
  3. onScrollChanged 也没用
  4. WebViewClient.onUnhandledInputEvent 永远不会被触发
  5. 我考虑过使用JavaScript evaluateJavaScript,但这是一个非常复杂和丑陋的解决方案
  6. 我试图跟踪MotionEvent 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
    • 根据ContentViewCore的源代码,触摸事件以本机方式结束nativeOnTouchEvent,我不知道它会发生什么.无论如何,onTouchEvent总是返回true,即使有可能在某处发现事件是否被消耗,它也需要使用非常丑陋的私有方法.

注意

我不需要知道如何拦截发送到WebView的触摸事件,但WebView是否正在使用它们,即是否正在使用它们执行任何操作,例如滚动,拖动等.

android webview

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

在链接上模拟jQuery/JavaScript中的单击

我想使用JavaScript模拟页面上任何链接的点击.如果该链接具有与其"onclick"事件绑定的某些功能(由任何其他JS我没有任何控制),则必须调用该函数,否则链接应以正常方式运行并打开新页面.

我不确定只检查'onclick'处理程序的值就足够了.我想构建它,以便它适用于任何链接元素.

我无法使用任何JS库(不一定是jQuery)或简单地使用JavaScript来控制可能绑定到链接的onclick事件的函数.

编辑:在下面的答案的帮助下,看起来可以检查使用jQuery附加的事件处理程序或使用该onclick属性.如何检查使用addEventListener/任何其他JS库附加的事件处理程序,以便它是万无一失的?

javascript jquery onclick

53
推荐指数
5
解决办法
18万
查看次数

当我点击一个元素时,如何找出javascript运行的内容?

我正在查看Bing Maps网站.我打开了我的位置编辑器并单击绘图工具栏中的折线工具.

我想发现当我点击绘图工具栏中的工具时javascript运行的是什么.

我查看了html,并且onclick元素上没有声明事件.

我已经对页面引用的所有脚本进行了文本搜索,以获取折线工具元素的ID.这是为了尝试找到将click事件附加到元素的javascript,但我根本没有匹配.

单击工具时必须运行一些脚本.当我单击工具栏中的工具div时,如何找出正在执行的脚本?

如果我不首先知道要设置它们的脚本,我认为无论如何我都可以设置断点.无论如何,我可以捕获运行的javascript来发现它是什么,在IE F12开发人员工具或firebug中?

javascript

41
推荐指数
2
解决办法
3万
查看次数

使用Chrome开发工具/ Firebug/IE开发人员工具栏查找元素的附加/绑定事件

在检查页面的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

40
推荐指数
4
解决办法
2万
查看次数

Firefox扩展,找出哪个Javascript事件绑定到被检查的元素?

可以将Javascript事件绑定到html元素,而无需使用内联声明.

检查html元素是否有办法知道哪些事件绑定到元素?我想知道开发人员定义的事件,而不是浏览器附带的内部事件.

因此,如果我将鼠标悬停在元素上并显示菜单,我想知道哪种方法导致了它.

我一直在使用代码检查器尝试事件间谍,但它记录了太多的内部代码,除非我没有正确使用它.

javascript firefox firefox-addon dom-events

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