在一个子页面里想实现一键复制到剪贴版的功能,使用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失效问题的更多相关文章

  1. 2.26 js解决click失效问题

    2.26 js解决click失效问题 前言有时候元素明明已经找到了,运行也没报错,点击后页面没任何反应.这种问题遇到了,是比较头疼的,因为没任何报错,只是click事件失效了.本篇用2种方法解决这种诡 ...

  2. Nessus如何解除IP限制以及解决重启失效的后遗症

    Nessus如何解除IP限制以及解决重启失效的后遗症 1.解除IP限制 1.获取当前plugins的版本号. https://plugins.nessus.org/v2/plugins.php 2.停 ...

  3. eclipse 解决插件失效

    昨天系统崩溃,重装系统后eclipse突然对links方式加载插件失效.用尽了网上各种解决方法,始终不行.在%eclispe_dir%/configration/org.eclipse.update/ ...

  4. spring mvc3 静态文件放在WEB-INF下无法访问解决和解决@Controller失效问题

    今天整合spring+mybatis+easyui碰到的问题 将easyui放在WEB-INF下后无法访问, 解决:需配置<mvc:resources mapping="/easyui ...

  5. Selenium2+python自动化46-js解决click失效问题

    前言 有时候元素明明已经找到了,运行也没报错,点击后页面没任何反应.这种问题遇到了,是比较头疼的,因为没任何报错,只是click事件失效了. 本篇用2种方法解决这种诡异的点击事件失效问题 一.遇到的问 ...

  6. Selenium2+python自动化46-js解决click失效问题【转载】

    前言 有时候元素明明已经找到了,运行也没报错,点击后页面没任何反应.这种问题遇到了,是比较头疼的,因为没任何报错,只是click事件失效了. 本篇用2种方法解决这种诡异的点击事件失效问题 一.遇到的问 ...

  7. Android学习笔记----解决“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536”问题

    同时在工程中引入了多个第三方jar包,导致调用的方法数超过了android设定的65536个(DEX 64K problem),进而导致dex无法生成,也就无法生成APK文件. 解决办法如下: 1.谷 ...

  8. 解决session失效之后登陆后重新返回之前的页面

    在全局拦截器设置保存之前的url存入session中 登陆之后的地址再重session中存 request只用作一次请求 如果页面跳转几次的话原来的url就不存在了建议存在session @Overr ...

  9. 学习笔记------------解决margin塌陷

    首先来解释一下什么是marg塌陷? 父子嵌套元素垂直方向的margin,父子元素是结合在一起的,他们两个会取其中最大的值 正常情况下应该是父级元素相对于浏览器定位,而子级元素相对于父级元素定位 但是m ...

随机推荐

  1. uiautomator+cucumber实现移动app自动化测试

    前提 由于公司业务要求,所以自动化测试要达到以下几点: 跨应用的测试 测试用例可读性强 测试报告可读性强 对失败的用例有截图保存并在报告中体现 基于以上几点,在对自动化测试框架选型的时候就选择了uia ...

  2. python-成员修饰符

    python的面相对象中,拥有3个成员,字段.方法.属性 class Foo: def __init__(self,name): #公有字段name在类中与类外均能调用 self.name = nam ...

  3. java程序员笑不死的经历ส้้้้้้้้้

    ส้้้้้้้้้้ส้้้้้้้้้้ส้้้้้้้้้ 1.程序猿最烦两件事,第一件事是别人要求他给自己的代码写文档,第二件呢?是别人的程序没有留下文档. 2.宪法顶个球!中国的法律都是.t ...

  4. HashMap 的深入学习

    Java为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap.Hashtable.LinkedHashMap和TreeMap,类继承关系如下图 ...

  5. 【转】Unity3D 关于贝赛尔曲线,平滑曲线,平滑路径,动态曲线

    http://tieba.baidu.com/p/2460036481 很多时候我们需要的并不是直线和折线,而是平滑的曲线,比如寻路系统,某些物体的曲线运动,都需要平滑曲线来保证效果,今天试了一下,通 ...

  6. jQuery选择器示例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. python3.6操作mysql

    1.通过 pip 安装 pymysql 进入 cmd  输入  pip install pymysql   回车等待安装完成: 安装完成后出现如图相关信息,表示安装成功. 2.测试连接 import ...

  8. c# json 反序列化 泛型List 2行代码

    List<EncyTable> list = new List<EncyTable>(); var jsonReqeust = "[{ENCY_ID:775,ENCY ...

  9. 2016年NK冬季训练赛 民间题解

    A题 水题,考察对行的读入和处理,注意使用long long #include <iostream> #include <cstring> #include <cstdi ...

  10. [洛谷P2801]教主的魔法

    题目大意:有$n$个数,$q$个操作.两种操作: $M\;l\;r\;w:$把$[l,r]$所有数加上$w$ $A\;l\;r\;c:$查询$[l,r]$内大于等于$c$的元素的个数. 题解:分块,对 ...