解决火狐浏览器拖拽打开新窗口的问题

火狐浏览器实现拖拽有2个坑:

1、在dragstart事件中,必须要使用ev.dataTransfer.setData(),否则,即使在html中设置了元素 draggable=true,拖拽也是无效的。

dragstart: function (ev) {
    ev.dataTransfer = ev.originalEvent.dataTransfer;
    var domId = ev.target.id;

    ev.dataTransfer.setData("domId",domId);

},

2、火狐拖放后,总会默认打开百度搜索,如果是图片,则会打开图片。

解决办法:

在drop事件中增加阻止事件冒泡。

dragDrop: function (ev) {
    ev.stopPropagation();
    ev.preventDefault();
    ev.dataTransfer = ev.originalEvent.dataTransfer;
    //do something
}

原文地址:https://www.cnblogs.com/liulei-cherry/p/8440609.html

时间: 2024-10-23 07:56:41

解决火狐浏览器拖拽打开新窗口的问题的相关文章

解决 MAC 终端上每次打开新窗口手动执行source ~/.bash_profile导出环境变量

MAC OSX上,使用终端(我用的是iTerm2),在个人主目录(~/.bash_profile)中配置了环境变量,但是每次在终端打开一个新标签页或窗口,都要手动执行一下source ~/.bash_profile,很麻烦,解决方法就是: 编辑个人主目录下的.zshrc 这个文件 vim ~/.zshrc 在最后一行少添加一句:(按i进入编辑模式) source ~/.bash_profile 保存退出, :wq 这样每次打开新窗口或标签页就自动执行了source ~/.bash_profile

ajax请求响应中用window.open打开新窗口会被浏览器拦截的解决方式

一.问题描述 ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是会被浏览器给拦截了,需要用户点下. 二.问题分析 浏览器之所以拦截新开窗口是因为该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了,即使 ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('click')),浏览器也会认为不是由用户主动触发的,因此不能被安全执行,所以被拦截. 说明: 1.如果是在 <a href="javascri

JS打开新窗口防止被浏览器阻止的方法

这篇文章主要介绍了JS打开新窗口防止被浏览器阻止的方法,分析对比了常用方法与改进方法,是非常实用的技巧,需要的朋友可以参考下 本文实例讲述了JS打开新窗口防止被浏览器阻止的方法.分享给大家供大家参考.具体分析如下: 用传统的window.open()方式打开新窗口,会被浏览器阻止,那么,我们如何才能让JS打开新窗口不被浏览器阻止呢?其实办法还是有的,这里我们就来分析一下如何解决这个问题 我最近也遇到了这样的问题,所以就把弹出新窗口的方法分享给大家.欢迎大家补充哦... 第一种.使用原生javas

Flash打开新窗口 被浏览器拦截 navigateToURL被拦截

众所周知,打开新窗口以前经常被用作弹出广告用,而随着浏览器发展,现在估计除了ie6之外,基本都有广告拦截功能,最基本就是拦截这种非人为的弹出新窗口.我对js研究不深,我所了解就是,必须是用户操作的处理过程中,用window.open才能顺利通过浏览器的拦截检查.同样地,在Flash中,也有很多类似的安全限制,必须是用户操作才能触发一些危险代码的执行(例如,打开文件选择框).  今天,在处理XXXX的时候,点击flash的按钮时,无法正常弹出新窗口.于是,今天专门好好研究一下这个问题.正好,前几天

js 打开新窗口方式

之前的项目,有个功能是下载文件,这里只要在浏览器输入 url 就会下载那个文件了.当时我只是简单得使用 window.open ,但是却会被浏览器进行拦截,要手动开启才行,然后就搜索研究其他方法,就看到各种各样的,通过 js 打开新窗口的方法了,这里就总结一下 解决下载功能 这里就先说解决下载功能的方法,通过同事的提醒,改用 iframe 进行处理,直接对 iframe 的 src 进行赋值,就会自动进行下载文件了,不过,如果后端在 response header 设置了某个头部,就会报错了:x

使用javascript如何打开新窗口

javascript打开新窗口方法 window.open('http://www.onesheng.cn'); [1.最基本的弹出窗口代码]  其实代码非常简单: <SCRIPT LANGUAGE="javascript"> <!-- window.open ('smsyun.html') --> </SCRIPT> 因为着是一段javascripts代码,所以它们应该放在<SCRIPT LANGUAGE="javascript&q

js打开新窗口并且不被拦截

window.open是javascript函数,该函数的作用是打开一个新窗口或这改变原来的窗口,如果你直接在js中调用window.open()函数去打开一个新窗口,浏览器会拦截你,那么如何避免呢. 注意,只有直接使用js调用 window.open(url); 打开新窗口时,才会被拦截,如果是改变原理额窗口:window.open(url,'_self'); 则不会被拦截. 那么 js调用 window.open(url); 打开新窗口,如何才能不会浏览器拦截呢? 浏览器会拦截你,是认为你将

【JavaScript】单击网页任意一处打开新窗口与关闭窗口

在一些不正规的网站,尤其是那些挂满广告的下载站,经常在你点击的下载链接之前,无论你点击网页的任何一处都会弹出新窗口. 这样的效果,可以轻松用JavaScript做到,还可以专门指定点击某一区域的Div,才触发打开新窗口的事件. 比如下图的效果: 在原网页中,指定一个Div,无论用户点击这个Div的任意区域,都会打开新窗口,而点击其它地方则不会. 在新窗口的地址栏不可以编辑,不能被调整大小,提供一个"关闭"按钮,关闭该窗口. 原网页的HTML布局如下, <!DOCTYPE HTML

解决火狐浏览器安装不上Selenium IDE插件“此附加组件无法安装”

(摘自http://blog.sina.com.cn/s/blog_14eea47cb0102w25n.html) 解决火狐浏览器安装不上Selenium IDE插件“此附加组件无法安装” 1.打开火狐浏览器,安装插件有如下提示 2.浏览器输入“about:config”,提示这样可能会失去质保,点击”我保证会小心“ 3.找到此项 4. 双击,即可改为关闭,这样就可以安装插件了