我们如何防止JavaScript中的默认操作?

时间:2009-12-11 07:00:23

标签: javascript

什么是跨浏览器方法?我需要阻止对图像的任何默认操作,以便在默认的基础上不会触发拖动或其他任何操作。

3 个答案:

答案 0 :(得分:5)

您可以注册要取消的活动,然后从return false注册或使用Event.preventDefault(),具体取决于浏览器和活动。

答案 1 :(得分:4)

(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来规避。

答案 2 :(得分:1)

您只能取消特定活动。您无法“全局取消”默认操作。

要专门取消dragging图像(在某些浏览器中只是默认功能),请将false返回到mousedown事件。