是什么导致页面上的某模块一定要刷新一次后才能出现?

发布于 2022-09-06 09:32:30 字数 1349 浏览 18 评论 0

我的shopify网店页面上用了一个第三方的用户评论模块Yotpo,用户的评论是存储在yotpo的网站上,加载页面时通过javascript发送ajax请求获取评论后显示在页面上。
碰到的问题是有时候第一次加载页面时,该模块不会显示,一定要手动刷新一下页面,评论模块才会显示。前几天我几乎每次打开页面时这个问题都会出现,这几天这个问题变成偶尔才会出现,这样就导致Debug更加困难了。

想请教一下,是什么原因造成页面上的一个模块一定要刷新一次才会出现呢?

用于加载该模块的javascript是用如下语句载入页面的

<script type="text/javascript">(function e(){var e=document.createElement("script");e.type="text/javascript",e.async=true,e.src="//staticw2.yotpo.com/thisissomeapikeys/widget.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})();</script>

我个人对技术只有极其粗浅的了解,想来想去只想到一种可能性:因为这个widget.js文件是从第三方网站异步加载的,加载完成后已经错过了某事件的响应期,导致不能正常触发呢?而刷新时因为此文件已经保存在本地缓存,所以能够赶上触发的事件。

写信给yotpo的客服反应这个问题,他们的回信看的我一头雾水,抄录如下:

It appears that your current theme incorporates AJAX elements in it
and therefore your pages are loaded synchronously.

Since Yotpo loads asynchronously, it will only be loaded once and will
be ignored by any AJAX scripts running on the page. In order to

什么叫“your current theme incorporates AJAX elements in it and therefore your pages are loaded synchronously”?页面中有ajax元素所以同步加载?这个因果关系完全看不懂。

“it will only be loaded once and will be ignored by any AJAX scripts running on the page” ?yotpo被其它ajax脚本忽略?这个我也看不懂,是说yotpo被一个统一处理ajax请求的脚本忽略了吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淡水深流 2022-09-13 09:32:30

为什么不直接用标签加载 widget.js ?

唯憾梦倾城 2022-09-13 09:32:30

客服的意思是,问题由异步加载引起,因此你可以尝试像楼上说的那样,直接用script标签加载

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文