我需要调试一个使用jQuery的Web应用程序来做一些相当复杂和混乱的DOM操作.有一次,某些与特定元素绑定的事件不会被触发,只是停止工作.
如果我有能力编辑应用程序源代码,我会向下钻取并添加一堆Firebug console.log()语句并注释/取消注释代码片段以尝试查明问题.但我们假设我无法编辑应用程序代码,需要使用Firebug或类似工具完全在Firefox中工作.
Firebug非常善于让我导航和操纵DOM.但到目前为止,我还没有弄清楚如何使用Firebug进行事件调试.具体来说,我只想查看在给定时间绑定到特定元素的事件处理程序列表(使用Firebug JavaScript断点来跟踪更改).但是Firebug没有能力看到绑定事件,或者我太笨了而无法找到它.:-)
任何建议或想法?理想情况下,我只想查看和编辑绑定到元素的事件,类似于今天我可以编辑DOM的方式.
如何检查鼠标移开时消失的元素?

我不知道它的ID,类或任何东西,但想要检查它.
我试过的解决方案:
在控制台内运行jQuery选择器,$('*:contains("some text")')但没有任何运气,主要是因为该元素未被隐藏但可能从DOM树中删除.
手动检查DOM树的变化给了我什么,因为它似乎太快而无法注意到已发生的变化.
成功:
我在事件断点方面取得了成功.具体来说 - 在我的情况下是mousedown.只需转到Sources-> Event Listener Breakpoints-> Mouse-> mousedownChrome.之后我点击了我要检查的元素,在里面Scope Variables我看到了一些有用的方向.
我有一个选择列表:
<select id="filter">
<option value="Open" selected="selected">Open</option>
<option value="Closed">Closed</option>
</select>
Run Code Online (Sandbox Code Playgroud)
当我选择Closed页面重新加载时.在这种情况下,它显示已关闭的票证(而不是打开).我手动操作时工作正常.
问题是当我Closed用Watir选择时页面不会重新加载:
browser.select_list(:id => "filter").select "Closed"
Run Code Online (Sandbox Code Playgroud)
这通常意味着不会触发某些JavaScript事件.我可以用Watir发射事件:
browser.select_list(:id => "filter").fire_event "onclick"
Run Code Online (Sandbox Code Playgroud)
但我需要知道要开火的事件.
有没有办法找出为元素定义了哪些事件?
有人可以告诉我如何设计一个能够突出显示活动行的工作表脚本吗?
当该行中的一个单元格处于活动状态时,我希望整个行更改字体或背景颜色.
我不希望触发器是单元格中的任何特定值,只需单击一个单元格就可以触发单元格所属的整行的高亮显示.
谢谢!
chrome dev工具(或任何扩展)中是否有一个功能,通过它我可以查看某个页面/应用程序上使用的所有事件侦听器.
编辑:
它肯定不是这个问题的重复:如何查看在Chrome DevTools中的元素上触发的事件?
在上述问题解释了如何寻找那些被解雇的时候,我们用我们的应用程序交互的特定事件(我知道如何做到这一点!).
什么我找的是所有事件的列表,我们听着应用程序和DOM它们所连接到的元素.
我想要做的就是在链接到外部网站的部分的html中包含一个锚标记.如果是这个标准的html,代码就是:
<a href="http://www.google.com" target="_blank">google</a>
Run Code Online (Sandbox Code Playgroud)
就像这一样简单,我似乎无法找到一个有效的解决方案来过去角度拦截路线(或者无意中用https://docs.angularjs.org/api/ng/directive/a指令替换我的锚点?) .
我已经搜索了SO和网络的其余部分并看到了无数的处理解决方案:同一域内的链接,SPA内的路由,页面内的路由(ala $ anchorScroll)但这些都不是我的问题.
我怀疑它可能与使用$ sce有关,但我是Angular n00b并且不确定如何正确使用该服务.我在视图控制器中尝试了以下内容:
$scope.trustUrl = function(url) {
return $sce.trustAsResourceUrl(url);
}
Run Code Online (Sandbox Code Playgroud)
与相应的:
<a ng-href="{{ trustUrl(item) }}">Click me!</a>
Run Code Online (Sandbox Code Playgroud)
(如下所述:在angularjs模板中绑定外部URL)
但这似乎没有做到这一点(我最终只在渲染页面中使用了href ="{{").
使用像这样的普通香草锚链接:
<a href="http://www.google.com">google</a>
Run Code Online (Sandbox Code Playgroud)
也没有做到这一点(尽管一些在线建议标准href会导致完整的页面重新加载角度:AngularJS - 我如何进行整页加载的重定向?).
我也尝试添加target = _self"属性,但这似乎也没有效果.
我是否需要编写如此处所述的自定义指令?
有条件地将target ="_ blank"添加到与Angular JS的链接中
对于这样一个简单的动作来说,这一切看起来都太复杂了,我觉得我在遗漏中遗漏了一些明显的东西,至少我希望如此,因为这个过程只是为了链接到另一个网址而感到非常繁重.
提前感谢任何解决方案,建议,参考或指导.
我正在从 Firefox 中调试 JS 切换到 Chrome 中。
我缺少的一件事是:
在 Firefox 中,我可以在 HTML 中看到“[event]”,其中附加了一个自定义事件处理程序。
我认为这个预览非常方便。
在 Chrome 中,我需要显式搜索事件处理程序。
有没有办法在 Chrome 中启用此功能(请参阅树中的事件处理程序)?
我想模拟点击GMail COMPOSE按钮使用JS而不使用JQuery.
这是按钮:
<div class="T-I J-J5-Ji T-I-KE L3" role="button" tabindex="0" gh="cm"
style="-webkit-user-select: none;">COMPOSE</div>
Run Code Online (Sandbox Code Playgroud)
这是我的js:
var element = document.getElementsByClassName('T-I-KE')[0];
element.click();
Run Code Online (Sandbox Code Playgroud)
结果:undefined在所有浏览器中
图片:http://i.imgur.com/4IX9DZX.png
已经尝试过:
var event = document.createEvent("MouseEvent");
event.initEvent("click",true,true);
var element=document.getElementsByClassName("T-I-KE")[0];
element.dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
结果:true.但没有任何反应.
我已经通过性能分析工具放置了我的网站,它回来说文档/窗口对象上有太多滚动侦听器.
有没有办法找到我的文档/窗口对象的所有滚动侦听器?
可能有以下几点:
window.scroll.listeners
Run Code Online (Sandbox Code Playgroud) javascript ×8
firebug ×2
anchor ×1
angularjs ×1
click ×1
dom-events ×1
events ×1
external-url ×1
firefox ×1
formatting ×1
gmail ×1
href ×1
jquery ×1
simulate ×1
watir ×1