TOGOUTECH

dom-events

全部标签

javascript - 为什么 .fireEvent() 在 IE9 中不触发?

使用IE9的时间相当令人沮丧。此代码适用于IE7/8,但不适用于9。document.getElementById('id').fireEvent("OnChange");关于原因的任何见解? 最佳答案 在IE版本>=9和所有其他浏览器中,您应该使用dispatchEvent方法:varevent=document.createEvent("HTMLEvents");event.initEvent("change",true,false);document.getEle

javascript - 浏览器调试 : how to see what Javascript functions was called after some action?

也许Firebug或Opera,GoogleChrome工具允许它。在哪里可以找到它?如何使用?示例:我单击按钮并想查看在该操作之后触发了哪些Javascript代码。 最佳答案 在GoogleChrome中,您可以打开开发者工具(Ctrl+Shift+J)选择Profiles选项卡,选择CollectJavaScriptCPUProfile,点击Start完成后,单击“停止”并查看进度日志... 关于javascript-浏览器调试:howtoseewhatJavascriptfunc

Javascript onkeydown 事件只触发一次?

我想让onkeydown事件只触发一次函数。要再次触发该功能,用户必须松开按键并再次按住。我知道它相当简单,但我是JS的新手。此外,我更愿意避免使用jQuery或其他库。还有一件事,这应该适用于ie和firefox。 最佳答案 我很惊讶它没有被提及,还有event.repeat:document.addEventListener('keydown',(e)=>{if(e.repeat)return;console.log(e.key);});每次按键只会触发一次,因为event.repeat在按住键后变为tru

javascript - 无法在 D3 JavaScript 库中获取点击事件

我正在使用D3JavaScript库将数据显示为力导向标记。它工作正常。但是我无法将点击事件添加到圈子中。所以当我点击圆圈时,我会得到圆圈的详分割析并将其显示在模态框中。varlinks=[{source:"x",target:"y",type:"paid"},......]';varnodes={};//Computethedistinctnodesfromthelinks.links.forEach(function(link){link.source=nodes[link.source]||(nodes[link.sourc

javascript - 为什么必须将事件对象作为参数传递?

我正在学习如何在JavaScript中操作事件,我想知道“为什么在使用事件处理时必须将事件对象作为参数(argument)传递给函数?”这是我正在谈论的例子:<scripttype="text/javascript">document.getElementById('button_1').onclick=(function(event){alert("Theeventis:"+"on"+event.type);});</script>我写了上面的代码,我非常理解它的作用。我只是不明白整个(事件)的过

javascript - 延迟加载 addthis 脚本? (或延迟加载依赖于已触发事件的外部 js 内容)

我想要addthis我的用户可以使用小部件,但我想延迟加载它,以便我的页面尽快加载。但是,在通过脚本标签然后通过我的延迟加载方法尝试之后,它似乎只能通过脚本标签工作。在经过混淆的代码中,我看到了一些看起来依赖于DOMContentLoaded事件的东西(至少对于Firefox而言)。由于DOMContentLoaded事件已经触发,因此小部件无法正确呈现。怎么办?我可以只使用脚本标记(速度较慢)...或者我可以触发(以跨浏览器的方式)DOMContentLoaded(或等效)事件吗?我觉得这可能是不可能的,因为我相信(像jQuery一样)内容就绪事件有多个测试,因此必须发生多个模拟事件

javascript - 在自定义对象中实现事件

我想要的是一个提供一些事件的自定义对象。例如:varCustomObjectTextChangedEventName='textChanged';varCustomObject=function(){var_this=this;var_text="";_this.OnTextChanged=document.createEvent("Event");_this.OnTextChanged.initEvent(CustomObjectTextChangedEventName,true,false);_this.ChangeText=func

javascript - 如何在 JavaScript(或 jQuery)中实现自定义广播事件?

我想实现一个可以“广播”的自定义事件,而不是发送到特定目标。只有那些已将自己注册为此类事件监听器的元素才会接收到它们。我的想法如下所示。首先,在代码的各个地方,都会有这样的语句some_subscriber.on_signal('some_signal',some_handler);我使用术语signal作为“广播事件”的简写。在上面的表达式中,some_subscriber通过为其提供处理程序将自己注册为此类信号的一种类型(称为“some_signal”)的监听器。在代码的其他地方,会有这样的语句publisher.signal_types['some_sig

javascript - 防止滚动子元素在 Angular 2 中传播

这是经典。您有一个父元素和一个子元素。子元素是绝对定位的,您希望用户滚动浏览其内容。但是,当您到达子元素的底部时,父元素(也允许有滚动条)开始滚动。这是不可取的。我想重现的基本行为是纽约时报的评论部分。对于example:正文允许向下滚动,但是当您位于评论部分的底部时,向下滚动不会执行任何操作。我认为这种情况下的主要区别在于,当光标位于body元素上时,我想让用户向下滚动。其他方法需要向主体添加一个类以防止主体中出现任何滚动事件。我以为我可以在Angular2中使用一些Javascript来做到这一点,但这是我迄今为止失败的尝试:我的子组件中有一个自定义指令:<child-ele

javascript - 查看元素的所有 dom 事件

我有一个jQueryUI日期选择器,当您单击一个日期时,它会将我的URL哈希清除为#,并且不会更改文本框中的日期。我假设在某处还有一些其他JavaScript实用程序具有某种委托(delegate)事件,该事件也被调用、抛出错误并终止jquery处理程序。我如何单步执行和/或查看所有委托(delegate)事件都匹配此dom元素。 最佳答案 Chrome的开发工具可以帮助解决这个问题:将Chrome指向页面右键点击jQueryUI日期选择器中的日期,然后选择“检查元素”。在最右侧,有一架Accordion,上面有各种东西。底部附近是