preventDefault()对一个多选择,不同的行为在Firefox - IE - Chrome
preventDefault() on a multi-select, different behavior on Firefox - IE - Chrome
我正在努力选择多个鼠标事件。我没想到在2015年不同浏览器的行为会有这样的差异…
我基本上试图模拟Ctrl+点击只有点击,便于使用。它在Chrome上工作,使用preventDefault()
,通过取消默认行为(选择当前选项并取消选择其他选项)
select.addEventListener('mousedown', function(evt) {
evt.preventDefault();
evt.target.selected = !evt.target.selected;
return false;
}, true);
这里是小提琴,你可以检查不同的浏览器:https://jsfiddle.net/fzvkw1xv/
- 铬→
- Firefox→就像
preventDefault()
不一样做任何事。 - IE 11 ->没有选项get
我想实现的是对多选择的完全控制,以获得更好的用户体验。
我找不到任何相关的文档,我不知道哪个浏览器有问题,或者标准的预期行为是什么。任何信息,这将是非常感激。我开始考虑让复选框看起来像一个多选择框。
不同的浏览器有不同的处理事件的方式。
除了事件捕获之外还有事件冒泡。你也得停下来。
发现事件传播模型:http://javascript.info/tutorial/bubbling-and-capturing
尝试更广泛的解决方案:
function (event) {
event = event || window.event // Cross-browser event
event.preventDefault(); // Stop event capturing
// Stop event bubbling
if (event.stopPropagation) { // W3C standard variant
event.stopPropagation();
} else { // IE variant
event.cancelBubble = true
}
return false;
}
http://javascript.info/tutorial/default-browser-action 相关文章:
- Angular js$Interval怪异行为-Firefox Chrome
- 由于传输层/meta/connect调用,使用faye/nodejs在Firefox / chrome上的初始页面加载时
- d3实现可以在firefox/chrome上运行,但不能在iPad上运行
- 为什么这个表达式在 Firefox/Chrome 中返回 true,而在 IE 中返回 false
- Jasmine 测试在测试运行中、Firefox/Chrome 之间以及检查器开/关时的结果不一致
- JavaScript XML解析在IE中工作,但在Firefox / Chrome中不起作用
- contentEditable and lastChild IE, Firefox & Chrome LastC
- WEBGL_draw_buffers最新的Firefox / Chrome上不支持
- 在Firefox / Chrome页面中打开IE浏览器
- 网站不适用于Firefox/Chrome,但适用于IE
- 任何使IE显示CSS3/HTML5与Firefox/Chrome相同的脚本
- onblur事件在IE/Firefox/Chrome中有所区别
- JQuery翻译函数在firefox/chrome中不起作用
- AudioContext Analyser在firefox/chrome上工作,但在Safari上不工作
- document.body.scrollHeight在firefox/chrome中产生两种不同的结果
- javascript数组的作用域不同于IE9和FireFox/Chrome
- 开发一个Firefox/Chrome扩展,覆盖形状的网页
- 如何隐藏地址栏在最新版本(Firefox, chrome和internet explorer)使用javascript窗
- innerHTML写上.value适用于IE9 IE8,但不适用于IE10, Firefox, Chrome
- Scrollbottom js不工作在Firefox, Chrome, Safari