MessengerExtensions.requestCloseBrowser() 不会在桌面上关闭

MessengerExtensions.requestCloseBrowser() won't close in desktop

当我尝试使用此代码关闭 webview 时:

MessengerExtensions.requestCloseBrowser(function success() {}, function failure(err) {
  alert('error closing the window: ' + err); // error closing the window: 
  console.log(err); // doesn't print
  window.close();
});

它关闭了 iOS 中的网络视图,但当我从桌面尝试时弹出警告。 我的域已列入白名单,messenger_extensions = true,我从桌面 Messenger 进入页面,但仍然无法正常工作。

我之前遇到过同样的问题,但相反(window 在桌面上关闭,但在 iOS 上不关闭),同时尝试使用 fetch(),这个问题在开始使用 $. ajax() 之前 MessengerExtensions.requestCloseBrowser() 是从 fetch 的承诺中调用的,现在是从 ajax 的成功函数中调用的。

我不得不用 ajax 切换抓取,因为它在 iOS

上不起作用

有什么建议吗?

一天后,错误代码 2071011 再次出现,仅在桌面浏览器中出现。 我设法通过使用 window.top.close(); 找到了解决问题的方法;当 MessengerExtensions.requestCloseBrowser() 失败时 它在 Chrome 上执行相同的技巧并在 Edge

上关闭之前询问用户
window.extAsyncInit = function() {
   MessengerExtensions.requestCloseBrowser(function success() {
     window.close(); // webview closed
   }, function error(err) {print ('an error occured');}
   );

 };

来自 https://developers.facebook.com/docs/messenger-platform/webview/extensions

上的文档

window.extAsyncInit() will be called when the Messenger Extensions JS SDK is done loading. You can use this as a trigger to call other functions available in the SDK.