script
没有添加 async
属性,导致 control 主题在购物车页面里会一直等待响应。
stripe 支付模块应该是 hook 了 WHMCS 的 ClientAreaFooterOutput
,使其在页脚输出了: <script type="text/javascript" src="https://js.stripe.com/v3/"></script>
但是 control 主题自带的 Loading 遮罩会等待所有载入完成后才去掉,然后 stripe 在水土不服的地方载入会长达 8 秒以上,这就导致了网页长时间卡在了 Loading
解决步奏:
- 在 WHMCS -> 常规设置 -> 安全,打开
Allow Smarty PHP Tags
- 编辑
templates/control/footer.tpl
模板文件 - 将
{$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}