什么是跨浏览器方法?我需要防止对图像执行任何默认操作,以便拖动或其他任何操作都不会在默认的基础上触发。我们如何防止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. 图像裁剪:如何防止默认拖拽拖放操作?
- 4. 如何在Ajax中防止JQuery中的默认操作调用结果条件
- 5. 防止默认操作,但不要停止传播事件
- 6. 的Javascript防止默认代码
- 7. 防止在Chrome中对tab键执行默认操作?
- 8. 如何在我们阻止它时恢复默认操作密钥?
- 9. 防止使用jQuery Ajax时的默认操作
- 10. 防止默认onkeyup事件在JavaScript
- 11. javascript功能防止默认问题
- 12. 绑定Aurelia事件处理程序可防止默认操作
- 13. 如何防止默认并禁用href
- 14. 如何防止删除“默认”实体?
- 15. 阻止使用IE8的默认操作
- 16. jquery防止默认不起作用
- 17. 防止默认不正常工作
- 18. ng-submit防止默认动作 - 意思?
- 19. jQuery防止输入默认动作
- 20. PHP AJAX防止默认
- 21. Jquery .click防止默认onClick
- 22. 帮助与防止默认
- 23. jQuery - 撤消防止默认
- 24. Jquery撤消 - 防止默认
- 25. 防止默认添加deps.js
- 26. 我如何防止加载默认的大礼包screen.css
- 27. 如何防止我们(多人)游戏中的作弊行为?
- 28. 我如何取消默认操作,如果用户在我的应用程序中将我的操作设置为默认操作?
- 29. 防止默认如果父母hasClass()
- 30. 在Silverlight中防止密钥默认值
请说明你的问题 – Pierreten 2009-12-11 07:03:13
一切都很清楚。仔细读。 – 2009-12-11 07:19:13
艾伦安德森,如果有人要求你澄清你的问题,你可能会认为,你看起来很清楚的东西并不一定对其他人清楚。你的问题是非常不清楚的。 – eyelidlessness 2009-12-11 08:10:56