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

我的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请求的脚本忽略了吗?

回复
阅读 1.8k
2 个回答

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

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏