Heim  >  Fragen und Antworten  >  Hauptteil

javascript - Chrome中js脚本中执行trigger("copy")无效果

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

已解决:

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

Antworte allen(2)Ich werde antworten

  • 迷茫

    迷茫2017-04-10 16:24:13

    抱歉,没有仔细的验证。

    单独写了测试页面,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,用户在页面有交互之后这个方法才能正常工作。
     
     
     

    Antwort
    0
  • 迷茫

    迷茫2017-04-10 16:24:13

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

    Antwort
    0
  • StornierenAntwort