Javascript 反应:在移动浏览器中,按钮onClick-hadler多次触发。桌面的就可以了

Javascript 反应:在移动浏览器中,按钮onClick-hadler多次触发。桌面的就可以了,javascript,reactjs,mobile,browser,Javascript,Reactjs,Mobile,Browser,我有一个非常简单的带有下载按钮的React页面: <button type='button' className='button' onClick={this._downloadArchive} style={{width: '100%'}} > <div style={styles.archiveButton}> <div>Download</div> <div>{'archive.zip'}

我有一个非常简单的带有下载按钮的React页面:

<button
  type='button'
  className='button'
  onClick={this._downloadArchive}
  style={{width: '100%'}}
  >
   <div style={styles.archiveButton}>
    <div>Download</div>
    <div>{'archive.zip'}</div>
    </div>
</button>
在桌面浏览器中,它可以正常工作,但在所有移动浏览器中,处理程序都被称为多次(3-4次,取决于设备和浏览器),两次调用之间的延迟为100-300毫秒——我可以在后端日志中看到。 同时,手机浏览器只下载一次文件。 如何防止这种行为


尝试使用onTouchEnd事件(使用检测移动客户端)-结果是相同的

您可以使用json从文本响应解析为json。parse

您可以使用json从文本响应解析为json。parse

查看代码,React事件处理程序似乎没有问题。你能检查一下这是否有效吗

\u下载存档=(e)=>{
e、 停止传播();
让filename='archive.zip';
让url='/beta/archive32?文件名='+文件名+屏幕详细信息;
打开窗口(url)
};

参考资料:

看看代码,React事件处理程序似乎没有问题。你能检查一下这是否有效吗

\u下载存档=(e)=>{
e、 停止传播();
让filename='archive.zip';
让url='/beta/archive32?文件名='+文件名+屏幕详细信息;
打开窗口(url)
};

参考资料:

你能在网上发布一些关于这个问题的小例子吗?确切的代码在上面,还需要什么?后端工作没有问题,问题只在移动浏览器中存在,因为statedId您可以尝试_downloadArchive=(e)=>{e.preventDefault()..你能在网上发布一些关于这个问题的小例子吗?确切的代码在上面,可能还需要什么?后端工作没有问题,这个问题只在移动浏览器中存在,正如你尝试的那样下载存档=(e)=>{e.preventDefault()。。。。
_downloadArchive = () => {
  let filename = 'archive.zip';
  let url = '/beta/archive32?filename=' + filename + screenDetails;
  window.open(url)
};