其他标签中的异步操作

时间:2020-08-18 08:12:10

标签: javascript tabs whatsapp

我正在努力解决以下问题:

我有一个带有按钮的网站,该按钮应该通过whatsapp网络通过whatsapp发送消息

<div class="btn-group" id="messages">
  <button type="button" class="btn btn-primary btn-xs" onclick="sendWhatsapp('GVALRQ')">
    <i class="fa fa-at"></i>&nbsp;<i class="fa fa-users"></i>&nbsp;Welcome!
  </button>
  <a id="messageAnchor" href="" target="_blank"></a>
</div>

onclick事件调用以下函数:

function sendWhatsapp(messageType) {
  let $div = $('<div>');
  $div.load('https://example.com/messagerepository.html #'+messageType, function(){
    let message = $(this).contents().val();
    $('#messageAnchor').attr("href","https://web.whatsapp.com/send?phone=123456&text="+(message));
    $('#messageAnchor')[0].click();
    if (confirm('Were you able to send the message by Whatsapp?')) {
      // do something in case of success
      return true;
    }
    // do something in case of failure
    return false;
  });
}

请不要专注于whatsapp api的工作原理-它确实会发送消息。它打开网络whatsapp界面,该界面预填充了要发送到指定电话号码的消息字段。用户可能必须在编辑消息后简单地按“发送”。 (我知道有更好的/自动化的解决方案,但是我需要使用这种工作方式)。

我的问题如下:理想情况下,我将让新的whatapp选项卡告诉我(调用选项卡,该按钮位于其中)消息已成功发送并采取相应的措施。我无法执行此操作,因为web.whatsapp.com API中似乎没有回调函数。因此,我要做的是停止脚本,直到用户在新打开的选项卡中完成了消息发送,然后返回到调用选项卡,并手动确认消息已成功发送(或未发送)。这样做的问题是在confirm()之后调用了click(),因此浏览器(Chrome)注意到我不在脚本运行的选项卡上,并抛出以下错误:

A window.confirm() dialog generated by this page was suppressed because this page is not the active tab of the front window. Please make sure your dialogs are triggered by user interactions to avoid this situation. https://www.chromestatus.com/feature/5140698722467840

任何帮助都会以降序或可取的方式受到赞赏:

  • (正在做梦)从web.whatsapp api中获取回调...好吧
  • 从运行脚本的选项卡上导航时,请保留脚本,直到用户回到该选项卡为止。
  • 诱使浏览器认为用户仍在选项卡上,启动confirm()并导航至whatsapp。

0 个答案:

没有答案