javascript - Chrome中js脚本中执行trigger("copy")无效果
PHP中文网
PHP中文网 2017-04-10 16:22:13
0
2
618

RT,想模拟js触发copy事件,写在js脚本中无效果,但是手动在dev控制台执行无问题。这个是因为chrome的安全策略导致的么?

已解决:

这个问题的背景没说清楚,实际上我是想通过写一个chrome插件来对页面一些事件进行处理。现在可以确定的是,至少在chrome46上,context script里面是无法用js(指用trigger方法)触发copy事件的。但是页面环境可以(trigger,execCommand)。
另外查了下资料,chrome中目前还不能使用new ClipboardEvent,因此在context script下用原生的方法模拟似乎也是行不通的。
PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(2)
迷茫

抱歉,没有仔细的验证。

单独写了测试页面,chrome还是支持trigger copy的,测试页面确实有效果.Chrome版本:46.0.2490.86。自己项目中为什么失效还得找原因。

Stack OverFlow上说"Not possible without Flash or silverlight like plugins.",不知道是哪个chrome版本.

相关资料:

 用ZeroClipboard/jquery zclip插件,通过flash来实现copy。
 
 还有一种方法,使用浏览器原生的Document.execCommand()方法实现copy,这个方法是可以触发copy事件的。
 不过要chrome42及以上才支持。另外chrome48以前还有bug,用户在页面有交互之后这个方法才能正常工作。
 
 
 
迷茫

手机chrome在执行location.href="xxx://yyy?url=http://......"唤醒手机内某个APP并跳转到APP内某个H5页面是失效的,但是放在click按钮的handler里面是可以的,但是我用trigger('click')来模拟触发也没有用。
说明chrome是对某些行为做检查的,所有trigger,其时也是自动执行的代码,其trigger的handler也是会被检查的,目前只有放在handler里面,并等待运行时用户手动触发的,才能越过检查直接执行。看看原有的代码是不是有不能通过检查的地方。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板