什么是跨浏览器方法?我需要防止对图像执行任何默认操作,以便拖动或其他任何操作都不会在默认的基础上触发。我们如何防止JavaScript中的默认操作?
回答
您只能取消特定事件。您不能“全局取消”默认操作。
为了具体取消dragging
的图像(其仅是缺省功能在某些浏览器),则返回false
到mousedown
事件。
您可以全局取消很多默认操作,但不是全部。在这种情况下(原谅糟糕的代码)'document.onmousedown = function(e){if(typeof e =='undefined')e = window.event; if(e.preventDefault)e.preventDefault();如果(e.stopPagagation)e.stopPropagation(); e.returnValue = false;返回false; };但显然这会产生很多令人讨厌的副作用。 – eyelidlessness 2009-12-11 07:09:02
的确如此,这会产生令人讨厌的副作用,但肯定更多的是全球概念。 – 2009-12-11 07:10:55
补充:适用于几乎任何气泡的事件。对于“事件授权”(显然这是一个重叠的概念,并不完全是1:1)和非冒泡事件已经取得了一些进展,但我不知道这些事件是如何实现的。我知道jQuery最近的alpha已经开始实现这些,所以它可能值得一看。 – eyelidlessness 2009-12-11 07:14:01
您可以注册要取消的活动,然后从其中注册return false
或使用Event.preventDefault()
,具体取决于浏览器和事件。
这不适用于跨浏览器。但是海报并未指定哪些浏览器是针对的。 – squiddle 2009-12-11 10:28:49
(function() {
var onmousedown;
if('onmousedown' in document && typeof document.onmousedown == 'function') {
onmousedown = document.onmousedown;
}
document.onmousedown = function(e) {
if(typeof e == 'undefined') {
e = window.event;
}
if(!e.target) {
e.target = e.srcElement || document;
}
if('nodeName' in e.target && e.target.nodeName.toLowerCase() == 'img') {
if(e.preventDefault) {
e.preventDefault();
}
// If you want to register mousedown events for
// elements containing images, you will want to
// remove the next four lines.
if(e.stopPropagation) {
e.stopPropagation();
}
e.cancelBubble = true;
e.returnValue = false;
return false;
}
if(onmousedown !== undefined) {
onmousedown(e);
}
};
})();
你可能需要做一些类似你想阻止其他事件的东西,如果你想要的东西,这并不这样做。
另外值得注意的是,如果您试图阻止人们将图片从网页下载到他们的计算机上,您将无法获得成功。如果浏览器可以下载图像,用户也可以下载。使用JavaScript来阻止(一些)尝试很容易通过简单地禁用JavaScript来绕过。
- 1. 防止默认操作
- 2. 如何防止使用JavaScript的锚标记的默认操作?
- 3. 如何防止confirm()的默认操作JavaScript
- 4. 如何防止Mousewheel事件的默认操作
- 5. 我们如何防止MVC3中的提交按钮操作?
- 6. 图像裁剪:如何防止默认拖拽拖放操作?
- 7. 如何在Ajax中防止JQuery中的默认操作调用结果条件
- 8. 防止默认操作,但不要停止传播事件
- 9. 的Javascript防止默认代码
- 10. 如何在我们阻止它时恢复默认操作密钥?
- 11. 防止在Chrome中对tab键执行默认操作?
- 12. 防止默认操作。只有在工作铬
- 13. 防止对所有输入的默认操作
- 14. 防止在ios 5.1上打开键盘的默认操作
- 15. 防止使用jQuery Ajax时的默认操作
- 16. 防止在画布中执行默认操作,但在不使用画布时恢复默认操作?
- 17. javascript功能防止默认问题
- 18. 防止默认onkeyup事件在JavaScript
- 19. 防止默认的IE
- 20. 绑定Aurelia事件处理程序可防止默认操作
- 21. 如何防止默认加载地图?
- 22. 如何防止表单提交默认?
- 23. 如何防止删除“默认”实体?
- 24. 如何防止默认并禁用href
- 25. 如何防止与CSS或JavaScript默认的标题行为
- 26. 防止默认不起作用
- 27. ng-submit防止默认动作 - 意思?
- 28. jQuery防止输入默认动作
- 29. jquery防止默认不起作用
- 30. è防止默认工作不
请说明你的问题 – Pierreten 2009-12-11 07:03:13
一切都很清楚。仔细读。 – 2009-12-11 07:19:13
艾伦安德森,如果有人要求你澄清你的问题,你可能会认为,你看起来很清楚的东西并不一定对其他人清楚。你的问题是非常不清楚的。 – eyelidlessness 2009-12-11 08:10:56