Questions tagged «dom-events»

DOM(文档对象模型)事件允许事件驱动的编程语言在DOM树内的元素节点上注册各种事件处理程序/侦听器。

4
event.preventDefault()与返回false(无jQuery)
我想知道是否event.preventDefault()和return false相同。 我做了一些测试,看来 例如,如果事件处理程序是使用旧模型添加的 elem.onclick = function(){ return false; }; 然后,return false阻止默认操作,例如event.preventDefault()。 如果事件处理程序使用添加addEventListener,例如 elem.addEventListener( 'click', function(e){ return false; }, false ); 然后,return false不要阻止默认操作。 所有浏览器的行为都一样吗? event.preventDefault()和之间还有更多区别return false吗? 在哪里可以找到一些有关return false行为的文档(我在MDN中找不到)event.preventDefault()? 我的问题只是关于普通的javascript,而不是jQuery,因此请不要将其标记为event.preventDefault()与return false的重复,即使两个问题的标题几乎相同。


7
输入元素上的JavaScript更改事件仅在失去焦点时触发
我有一个输入元素,我想继续检查内容的长度,每当长度等于特定大小时,我都希望启用提交按钮,但是我遇到了Java的onchange事件作为事件的问题仅在输入元素超出范围时触发,而在内容更改时不触发。 <input type="text" id="name" onchange="checkLength(this.value)" /> ---- onchange不会在更改名称内容时触发,而仅在名称失去焦点时才触发。 我可以做些什么来使此事件在内容更改上起作用吗?或其他可以用于此目的的事件?我通过使用onkeyup函数找到了一种解决方法,但是当我们从浏览器的自动完成器中选择某些内容时,这种方法不会触发。 我希望在通过键盘或鼠标更改字段内容时可以使用的东西……有什么想法吗?

11
防止浏览器在HTML5历史记录popstate上滚动
发生popstate事件时,是否可以防止滚动文档的默认行为? 我们的网站使用jQuery动画滚动和History.js,并且状态更改应使用户通过pushstate或popstate滚动到页面的不同区域。问题是浏览器在发生popstate事件时会自动恢复先前状态的滚动位置。 我尝试使用设置为文档宽度和高度100%的容器元素,并在该容器内滚动内容。我发现的问题是,它似乎不像滚动文档那样平滑。尤其是在使用大量css3(例如框阴影和渐变)的情况下。 我还尝试了在用户启动滚动期间存储文档的滚动位置,并在浏览器滚动页面后(在popstate上)恢复了它的位置。在Firefox 12中可以正常工作,但在Chrome 19中,由于正在滚动和还原页面,因此会出现闪烁。我认为这与滚动和被触发的滚动事件(恢复滚动位置)之间的延迟有关。 Firefox在popstate触发之前先滚动页面(并触发scroll事件),Chrome先触发popstate然后再滚动文档。 我见过的所有使用历史API的网站都使用与上述类似的解决方案,或者在用户后退/前进时忽略滚动位置更改(例如GitHub)。 是否可以防止在popstate事件中根本滚动文档?

9
如何在锚点标签中以编程方式调用onclick()事件,同时在onclick函数中保留“ this”引用?
以下内容不起作用...(至少在Firefoxdocument.getElementById('linkid').click()中不起作用:不是函数) <script type="text/javascript"> function doOnClick() { document.getElementById('linkid').click(); //Should alert('/testlocation'); } </script> <a id="linkid" href="/testlocation" onclick="alert(this.href);">Testlink</a>

8
如何在JavaScript中实现锁定
如何lock在JavaScript中实现与C#等效的功能? 因此,解释一下我在想一个简单的用例是: 用户单击按钮B。 B引发一个onclick事件。如果B是在event-state事件等待B是在ready-state传播之前。如果Binready-state中的B被锁定并设置为event-state,则事件传播。事件的传播完成后,B设置为ready-state。 我可以看到仅通过ready-state在按钮中添加和删​​除类,就能完成与此类似的事情。但是,问题在于用户连续单击按钮的时间比设置变量的速度快两次,因此在某些情况下,这种锁定尝试将失败。 有谁知道如何实现在JavaScript中不会失败的锁?


7
window.location.href更改时的事件
我正在为某个网站编写Greasemonkey脚本,该脚本有时会进行修改location.href。 在页面上进行更改时,如何获得事件(通过window.addEventListener或类似方式)window.location.href?我还需要访问指向新的/修改的URL的文档的DOM。 我已经看到了其他涉及超时和轮询的解决方案,但是如果可能的话,我想避免这种情况。


5
使用JavaScript在Safari中触发键盘事件
我正在尝试使用JavaScript在Safari中模拟键盘事件。 我已经试过了: var event = document.createEvent("KeyboardEvent"); event.initKeyboardEvent("keypress", true, true, null, false, false, false, false, 115, 0); ...还有这个: var event = document.createEvent("UIEvents"); event.initUIEvent("keypress", true, true, window, 1); event.keyCode = 115; 但是,在尝试了两种方法之后,我遇到了相同的问题:在执行代码之后,将事件对象的keyCode/which属性设置为0,而不是115。 有谁知道如何在Safari中可靠地创建和调度键盘事件?(如果可能,我宁愿使用普通JavaScript来实现。)

6
jQuery逐步读取AJAX流?
我已经阅读了这个问题,但是并不能完全回答我的问题。不幸的是,自从我上次查看AJAX以来,XHR对象中的一切似乎已经发生了变化,因此,responseText在完成填充之前,不再可以直接访问。 我必须编写一个页面,该页面使用AJAX(最好是jQuery,但我愿意接受建议)从无法控制的服务器通过HTTP检索CSV数据。响应数据可能会很大;一兆字节的文本并不罕见。 服务器是流友好的。在直接从JavaScript返回数据流时,还有什么方法可以访问它? 我确实可以选择编写一些PHP代码,这些代码位于中间并且使用某种“彗星”技术(长轮询,EventSource等),但是如果可能的话,我希望避免这样做。 如果相关,请假设用户具有Firefox / Chrome / Opera的最新版本,并且与旧浏览器的兼容性不是问题。

8
使用addEventListener的处理程序中“ this”的值
我已经通过原型创建了一个Javascript对象。我正在尝试动态呈现表。尽管呈现部分很简单并且可以正常工作,但我还需要为动态呈现的表处理某些客户端事件。那也很容易。我遇到问题的地方是处理事件的函数内部的“ this”引用。而不是“ this”引用对象,而是引用引发事件的元素。 参见代码。问题区域在ticketTable.prototype.handleCellClick = function(): function ticketTable(ticks) { // tickets is an array this.tickets = ticks; } ticketTable.prototype.render = function(element) { var tbl = document.createElement("table"); for ( var i = 0; i < this.tickets.length; i++ ) { // create row and cells var row = document.createElement("tr"); var cell1 = …

7
如何在Javascript中将光标设置到输入框?
document.getElementById(frmObj.id).value=""; document.getElementById(frmObj.id).autofocus; document.getElementById("errorMsg").innerHTML = "Only numeric value is allowed"; 在上面的代码中,将窗体对象的值完美设置为,""但文本框中没有光标。我希望光标在那里。focus()仅聚焦于该输入框,但实际上未设置光标。


22
Enter键的行为类似于Javascript中的Tab
我正在寻找一种创建表单的方法,按Enter键可使焦点移至页面上的“下一个”表单元素。我一直在网上找到的解决方案是... <body onkeydown="if(event.keyCode==13){event.keyCode=9; return event.keyCode}"> 不幸的是,这似乎仅在IE中有效。因此,这个问题的实质是,是否有人知道适用于FF和Chrome的解决方案?另外,我宁愿不必将onkeydown事件添加到表单元素本身,但是如果那是唯一的方法,则必须这样做。 这个问题与问题905222相似,但在我看来,这是一个自己的问题。 编辑:另外,我已经看到人们提出了这样的问题,即这不是好样式,因为它与用户习惯的表单行为不同。我同意!这是客户的要求:(

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.