【问题标题】:Shopify error: e.getBoundingClientRect is not a function (in widget.js)Shopify 错误:e.getBoundingClientRect 不是函数(在 widget.js 中)
【发布时间】:2017-10-11 11:55:56
【问题描述】:

请查看下面的屏幕截图以了解我遇到的错误:

未捕获的 TypeError:e.getBoundingClientRect 不是函数(在 widget.js 中)

为了重现该问题,我在我们未发布的 Shopify 主题中执行以下操作:

  • 进入购物车页面
  • 点击任意图片进入产品页面
  • 产品页面的 URL 更改
  • 产品页面加载
  • 开发工具没有清除“控制台”选项卡,这意味着页面没有完全重新加载,只是部分重新加载
  • 每当我向上或向下滚动页面时都会出现此错误
  • 按 F5(强制刷新页面)会完全重新加载页面并且此错误消失

我们使用 Shopify 应用进行评论,它负责 widget.js 文件。硬 F5 刷新后评论加载到产品页面。但在上述情况下,它们不会加载,您从购物车页面导航到产品页面。

这个主题的某些原因导致了这种“延迟页面加载”行为,并导致我们的 Shopify 应用程序崩溃。

我希望保留部分加载行为,因为它确实通过仅重新加载产品页面 HTML 本身来最大限度地减少页面加载时间,但它破坏了我们 Shopify 应用程序的功能。

我目前的想法是像这样进行破解:

setInterval(function(){ /检测 URL 变化,然后停止所有进程并强制重新加载页面/ }, 1);

但我不太喜欢这种解决方案,因为它感觉就像是创可贴,可能并不总是有效。相反,我认为修复根本问题会是一个更好的主意,我认为这在主题代码本身中(因此在此错误上 sic-ing Shopify Support 的原因)。

我们使用的当前发布的主题没有这个问题,因为每次 URL 更改都会导致整个页面重新加载。

以前有没有人遇到过这个问题,如果有,您对如何解决这个问题有什么建议吗?我已经向 Shopify 支持发送了电子邮件,并很乐意在此处为任何感兴趣的人分享他们的回复。

提前致谢!

【问题讨论】:

    标签: themes runtime-error lazy-loading shopify partial-views


    【解决方案1】:

    所以我能够摆脱这个错误,使用纯 Javascript 强制更改 URL 以重新加载整个页面,使用 cookie 记录最后加载的 URL,剥离函数删除 # 和 ? 右侧的所有内容URL 中的字符(因此产品变体之类的更改仍将仅使用部分加载),然后是 setInterval() 来检测 URL 何时更改。这似乎工作得很好,虽然我不禁觉得这样做有点 hacky...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-23
      • 2013-01-04
      • 1970-01-01
      • 2017-05-09
      • 1970-01-01
      • 2021-09-14
      相关资源
      最近更新 更多