zoukankan      html  css  js  c++  java
  • 禁止图片被拖拽,兼容谷歌,火狐,IE浏览器

    禁止图片被拖拽:

    接到需求在网上找了很多方法,

    1、如下火狐浏览器有问题

    for (i in document.images) document.images[i].ondragstart = imgdragstart;
    
    function imgdragstart() {
          return false;
    }

    2、这种方法过于复杂,ie浏览器有问题

    window.ondragstart=function(event){
    
        console.log(event)
        if(event.target.tagName.toUpperCase() =='IMG') {
          // alert(1)
          // Chrome
          return false;
        }else if(event.explicitOriginalTarget && event.explicitOriginalTarget.tagName.toUpperCase() == 'IMG') {
          alert(2)
          // 火狐
          return false;
        }else if($(event.target).has('>img').length) {
          alert(3)
          // IE
          return false;
        }
    }

    当img标签外有可跳转的按标签时,拖拽事件event的target对象是a标签对象,不是img导致产生问题

    3、考虑到2方法中的问题,想着通过其他事件获取到当前拖拽的对象,思路:在拖拽事件产生过程前还会触发哪些事件,这样想到了mousedown,进行了测试拖拽图片时,event的target对象在不同浏览器中都是img标签对象,这样解决问题的代码如下:

    // 禁止图片被拖拽
    function undragImg() {
        var mousedownTagName = ''
        document.addEventListener('mousedown', function (e) {
            mousedownTagName = e.target.tagName.toUpperCase()
        }, false)
        document.addEventListener('mouseup', function (e) {
            mousedownTagName = ''
        }, false)
        window.ondragstart=function(e){
            if(mousedownTagName == 'IMG') {
                return false
            }
        }
    }
    undragImg()
  • 相关阅读:
    11. Container With Most Water
    9. Palindrome Number
    375. 猜数字大小 II leetcode java
    leetcode 72 编辑距离 JAVA
    73. 矩阵置零 leetcode JAVA
    快速排序 JAVA实现
    63. 不同路径 II leetcode JAVA
    重写(override)与重载(overload)
    62 不同路径 leetcode JAVA
    leetcode 56 合并区间 JAVA
  • 原文地址:https://www.cnblogs.com/hjbky/p/14567095.html
Copyright © 2011-2022 走看看