zclip笔记:解决zclip失效问题
在一个子页面里想实现一键复制到剪贴版的功能,使用zclip插件,用jquery的方式实现时出现了诡异问题。复制功能平时正常,当页面中所列的内容过多时,一键复制的功能失效。
这个问题相当不好定位,先说结论:zclip工作的机制是将一个透明的flash ZeroClipboard.swf 覆盖到要点击的元素<a>之上,点击动作作用于flash。该flash的position设置为absolute,当子页面内容过长时,拉动滚动条,flash并不会随要点击的元素移动,因此点击该元素不会有任何效果。
解决方法:在要点击的元素外加一层<div>,设置position:relative
一开始我以为是信息量大时,由于后台处理的关系,响应时间过长导致zclip这个函数和元素出现加载顺序的问题。在js里加了一个$("#copy").click(function(){alert()}),点击时运行正常,排除。
接着将后台的返回值写死,复制功能依然失效,判断与后台的运行速度无关。将前台从后台动态取值的部分写死,问题依然存在。排除后台问题,定位为前台。
这时已经怀疑是zclip可能有bug。打开浏览器的开发工具,发现复制有效的场景中鼠标移到<a>上时,<a>的class变为hover,而无效的场景中没有这个变化,两者都有一个由zclip生成的embed元素。有点怀疑是无效场景中元素<a>与embed没有作关联,在<a>的class中加入hover,依然无效。观察两个embed元素,发现只有top值不同,解释为无效场景中页面信息多于有效场景,因此元素普遍下移。
我觉得可能要到zclip的工作原理中去找原因。看到说flash会覆盖在元素之上,再联想两个场景中唯一不同的就是top值,开始怀疑这个问题与位置有关。再想起在正确场景中,点击元素时开发工具会同时显示<a>与embed;而在无效场景中下面的embed没有反应,说明embed和<a>不在同一个位置。我判断最有可能的就是生成页面时原始元素与embed位置相同,而拉动滚动条的时候embed没有被拉上去。要验证的话应该可以发现当信息量大到足够使子页面产生滚动条时复制就会失效,这一步直接跳过了。
google了一下发现有老外也在讨论这个问题,并提出以上解决方案,按照该方案修改成功。
reference:http://stackoverflow.com/questions/8673681/zclip-not-working-inside-table
zclip笔记:解决zclip失效问题的更多相关文章
- 2.26 js解决click失效问题
2.26 js解决click失效问题 前言有时候元素明明已经找到了,运行也没报错,点击后页面没任何反应.这种问题遇到了,是比较头疼的,因为没任何报错,只是click事件失效了.本篇用2种方法解决这种诡 ...
- Nessus如何解除IP限制以及解决重启失效的后遗症
Nessus如何解除IP限制以及解决重启失效的后遗症 1.解除IP限制 1.获取当前plugins的版本号. https://plugins.nessus.org/v2/plugins.php 2.停 ...
- eclipse 解决插件失效
昨天系统崩溃,重装系统后eclipse突然对links方式加载插件失效.用尽了网上各种解决方法,始终不行.在%eclispe_dir%/configration/org.eclipse.update/ ...
- spring mvc3 静态文件放在WEB-INF下无法访问解决和解决@Controller失效问题
今天整合spring+mybatis+easyui碰到的问题 将easyui放在WEB-INF下后无法访问, 解决:需配置<mvc:resources mapping="/easyui ...
- Selenium2+python自动化46-js解决click失效问题
前言 有时候元素明明已经找到了,运行也没报错,点击后页面没任何反应.这种问题遇到了,是比较头疼的,因为没任何报错,只是click事件失效了. 本篇用2种方法解决这种诡异的点击事件失效问题 一.遇到的问 ...
- Selenium2+python自动化46-js解决click失效问题【转载】
前言 有时候元素明明已经找到了,运行也没报错,点击后页面没任何反应.这种问题遇到了,是比较头疼的,因为没任何报错,只是click事件失效了. 本篇用2种方法解决这种诡异的点击事件失效问题 一.遇到的问 ...
- Android学习笔记----解决“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536”问题
同时在工程中引入了多个第三方jar包,导致调用的方法数超过了android设定的65536个(DEX 64K problem),进而导致dex无法生成,也就无法生成APK文件. 解决办法如下: 1.谷 ...
- 解决session失效之后登陆后重新返回之前的页面
在全局拦截器设置保存之前的url存入session中 登陆之后的地址再重session中存 request只用作一次请求 如果页面跳转几次的话原来的url就不存在了建议存在session @Overr ...
- 学习笔记------------解决margin塌陷
首先来解释一下什么是marg塌陷? 父子嵌套元素垂直方向的margin,父子元素是结合在一起的,他们两个会取其中最大的值 正常情况下应该是父级元素相对于浏览器定位,而子级元素相对于父级元素定位 但是m ...
随机推荐
- 在sqlserver 中如何导出数据库表结构到excel表格中
先建空白excel--在数据库中的左侧找到该表, 选中需要导出的数据--Ctrl+C复制--打开记事本修改编码格式为Unicode-不自动换行保存--Ctrl+A--Ctrl+C,再打开excel-- ...
- .Net导出Word和Excel
using System; using System.Collections.Generic; using System.Linq; using System.Web; public class Ex ...
- 自动化测试(二)如何用python写一个用户登陆功能
需求信息: 写一个判断登录的程序: 输入: username password 最大错误次数是3次,输入3次都没有登录成功,提示错误次数达到上限 需要判断输入是否为空,什么也不输入,输入一个空格.n个 ...
- Unity插件
1.2D Toolkit 如果过去你一直从事3D游戏开发,最近想转做2D游戏,最好尝试一下2D Toolkit.2D Toolkit是一款2D开发组件,它具有很强的灵活性和适应性,能够让开发者在Uni ...
- 孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数
孤荷凌寒自学python第四十七天通用跨数据库同一数据库中复制数据表函数 (完整学习过程屏幕记录视频地址在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 今天打算完成的是通用的(至少目 ...
- scrapy爬取图片并自定义图片名字
1 前言 Scrapy使用ImagesPipeline类中函数get_media_requests下载到图片后,默认的图片命名为图片下载链接的哈希值,例如:它的下载链接是http://img.iv ...
- 第六章 系统配置:DHCP和自动配置
系统配置:DHCP和自动配置 写在开头:今天和导师见了个面,抛给我一堆材料以及论文,感觉自己学业更加繁重.有些知识现阶段我可能没办法掌握,但是至少在我需要进一步理解它的时候,要知道在哪个地方能够找到. ...
- Oracle在登陆时被告知用户被锁,如何解决?
在登陆时被告知test用户被锁 1.用dba角色的用户登陆,进行解锁,先设置具体时间格式,以便查看具体时间 SQL> alter session set nls_date_format=’yyy ...
- Rust安装配置
Rust安装配置 话说前面: 如果你 之前安装过老版本的 rust 请先卸载 我说的是以 msi 文件安装的那种, 请进控制面板–> 程序中进行卸载 首先 下载官网 的 rustup-init. ...
- 洛谷 P3573 [POI2014]RAJ-Rally 解题报告
P3573 [POI2014]RAJ-Rally 题意: 给定一个\(N\)个点\(M\)条边的有向无环图,每条边长度都是\(1\). 请找到一个点,使得删掉这个点后剩余的图中的最长路径最短. 输入输 ...