草庐IT

监听机制

全部标签

JavaScript:从该监听器中删除事件监听器?

我一直想知道这种方法有多干净-从那个监听器中删除一个事件监听器。更新:我在内部保留对象和监听器的散列,因此我可以从任何地方删除事件监听器。我只是关心将其从内部移除。这样的行动真的有用吗?更新我问的是关于addEventListener、removeEventListener的事情。 最佳答案 您可以传递once选项让监听器只执行一次,然后自行删除。文档:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Parameters例子:

javascript - 监听控制台.log

我想为console.log()设置一个监听器,并在不阻止默认行为的情况下对消息做一些事情。因此,开发工具的控制台也应该收到消息。有什么想法吗? 最佳答案 从未在网页中尝试过,但它可以在浏览器插件中使用(出于安全原因,javascript权限不同)。你绝对可以选择这样的东西:(function(){varoriginallog=console.log;console.log=function(txt){//Doreallyinterestingstuffalert("I'mdoinginterestingstuffhere!");o

javascript - 重新启用 touchmove 事件监听器。带有 Phonegap 的 iPhone 应用程序

我的js顶部有以下内容(iScroll插件需要它才能工作)。document.addEventListener('touchmove',function(e){e.preventDefault();},false);在某些页面上,我需要重新启用它,以便正常的iPhone滚动接管(并修复当在页面上使用iscroll时iPhone键盘不会在输入框中弹出的错误)。我不会练习语法。有人知道怎么做吗? 最佳答案 您需要定义一个函数来处理preventDefault行为,如下所示:document.addEventListener('touch

javascript - 在 JavaScript 中使用事件监听器获取子元素的索引

在不更改HTML的情况下,如何在单击时获取每个幻灯片容器的索引?例如。他们点击了2,我如何获得诸如node[1]之类的值?document.getElementById("slides").addEventListener("click",function(e){ console.log(e.target);});123 最佳答案 只要您不在回调中使用箭头函数语法,就可以使用this来引用slides元素。使用ES6扩展语法,您可以将其子元素扩展到一个数组中,然后对该数组使用indexOf来获取其中e.target的索引:docum

javascript - 如何删除事件监听器?

下面是我的事件监听器代码window.addEventListener("beforeunload",function(e){if(sessionStorage.token!="abide"){//callapi}});如果我想移除这个事件监听器,我该怎么办?代码是否像下面这样工作?window.removeEventListener("beforeunload"); 最佳答案 要删除事件监听器,您的事件处理函数必须是外部命名函数,而不是匿名(您需要引用它功能):window.addEventListener("beforeunlo

javascript - 如何创建一个事件监听器来检测 bool 变量是否变为真?

例如,我有varmenu_ready=false;。我有一个ajax函数,它在ajax完成后将menu_ready设置为true://setupeventlistenerhere$(...).load(...,function(){...menu_ready=true;}如何设置等待menu_ready为真的事件监听器? 最佳答案 您不能将事件监听器附加到JavaScript变量本身,但您可以伪造它。使用具有get、set和listen方法的对象,而不是bool变量:functionBool(initialValue){varboo

javascript - 将事件监听器添加到 HTML 元素集合

我知道getElementsByTagName和getElementsByClassName需要索引标识符才能将对象绑定(bind)到事件监听器。所以问题是,如何将事件监听器添加到使用getElementsByTagName或getElementsByClassName找到的HTML元素集合?varinputElem=document.getElementsByTagName('input');inputElem.addEventListener('click',function(){alert(this.value);},false);我知道如何在jQuery中执行此操作,但我想知道

javascript - `chrome.webRequest.onBeforeRequest.removeListener` ? -- 如何停止 chrome 网络监听器

所以我检查了chrome.webrequest的CatBlock扩展示例的示例代码,我看到它用打开了监听器chrome.webRequest.onBeforeRequest.addListener所以当我想关闭它时,我可以这样做吗chrome.webRequest.onBeforeRequest.removeListener?如果没有,我该如何摆脱它?我认为这类似于Javascript的原生事件监听器,但我知道在Chrome的扩展中使用的监听器有点不同。谢谢!艾维维 最佳答案 首先,完整文档isavailablehere.addLi

javascript - 使用 Vanilla JS 监听 jQuery 事件

所以我试图确定是否可以使用vanillaJS来监听通过jQuery添加的事件。我发现了这个问题:ListentojQueryeventwithoutjQuery对于jQuery的第1版,这绝对是答案。然而,版本3怎么样?我有一个我放在一起测试的fiddle,但我无法让第一个提交与任何版本的jQuery一起工作。我是否遗漏了什么,或者jQuery3中的事件模型是否仍未使用DOM事件模型?https://jsfiddle.net/ydej5qer/1/这是fiddle中的代码:HTML:Thisisdiv1.MyeventwasaddedviajQueryandislistenedforb

javascript - 即使监听函数返回 false,表单仍然被提交

我想弄清楚为什么这个JavaScript没有阻止提交表单:varcode=function(){returnfalse;};varelement=window.document.getElementById("form");if(element.addEventListener){element.addEventListener("submit",code,false);}除非我将以下onsubmit属性添加到表单元素:varcode=function(){returnfalse;};varelement=window.document.getElementById("form");i