解决 WHMCS stripe 支付模块在 control 主题阻塞网页载入

script 没有添加 async 属性,导致 control 主题在购物车页面里会一直等待响应。

stripe 支付模块应该是 hook 了 WHMCS 的 ClientAreaFooterOutput,使其在页脚输出了: <script type="text/javascript" src="https://js.stripe.com/v3/"></script>

但是 control 主题自带的 Loading 遮罩会等待所有载入完成后才去掉,然后 stripe 在水土不服的地方载入会长达 8 秒以上,这就导致了网页长时间卡在了 Loading

解决步奏:

  1. 在 WHMCS -> 常规设置 -> 安全,打开 Allow Smarty PHP Tags
  2. 编辑 templates/control/footer.tpl 模板文件
  3. {$footeroutput} 替换为以下代码
{php}
// 原始输出标记
// {$footeroutput}

// 改为异步
echo str_replace('<script type="text/javascript" src="https://js.stripe.com/v3/"></script>', '<script async type="text/javascript" src="https://js.stripe.com/v3/"></script>', $_smarty_tpl->tpl_vars['footeroutput']->value);

// 关闭 control 主题 Loading 遮罩
echo '<script>jQuery(".preloader-wrapper").fadeOut();</script>';
{/php}

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据