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()
  • 相关阅读:
    request库下载
    tomcat启动正常,但是访问项目时,404. Eclipse没有正确部署工程项目
    Tomcat端口被占用
    administrator账户权限如何开启和关闭
    团队作业2 需求分析与原型设计
    矩阵快速幂
    散列函数的应用及其安全性
    递归实例
    芯片测试
    优先队列小知识
  • 原文地址:https://www.cnblogs.com/hjbky/p/14567095.html
Copyright © 2011-2022 走看看