javascript 仅在页面刷新时执行 - Squarespace 站点,不涉及 Turbolinks

javascript executes only on page refresh - Squarespace site, NO Turbolinks involved

这个网站上有类似的问题标题,我已经阅读了他们所有的解决方案,但问题总是与 Turbolinks 或其他问题有关。在这种情况下,我仅使用 javascript/jQuery,因此这些解决方案无关紧要。

我写了一个简单的脚本来找到最高的容器,然后将块中的其余容器调整为与最高容器相同的高度。我将此脚本应用于 Squarespace 摘要块,以便同一块中的所有摘要项都具有相同的高度。

然后我添加了一个条件语句,该语句将导致此功能仅在屏幕宽度超过 810 像素时执行。

结果是这个脚本完全按照它应该的方式工作,但只有当我直接进入页面或刷新页面时。如果我从另一个页面导航到该页面,它将不起作用。

    $(function() {
     if($(window).width() > 810){
     var maxheight=-1;
     $('#block-yui_3_17_2_25_1494432854570_9795 .summary-excerpt').each(function() {
      if(maxheight < $(this).height())
      {
          maxheight = $(this).height();
      }
     });
     $('#block-yui_3_17_2_25_1494432854570_9795 .summary-excerpt').each(function() {
 $(this).height(maxheight);
     }); 
   }
});

非常感谢任何想法,因为我已经研究了与我的相似的每个问题并且 none 的解决方案对我有用。

注意:我没有收到错误。我在 if 语句之前放置了一个 alert() 并确认当您从另一个页面导航到该页面时该函数不会 运行 。然而,当我刷新页面时,我确实收到了一条警告,正如预期的那样。

在 Squarespace 中,当您的自定义 Javascript 仅在页面刷新后有效时,它很可能与 Squarespace's AJAX loading:

有关

Occasionally, Ajax may conflict with embedded custom code or anchor links. Ajax can also interfere with site analytics, logging hits on the first page only.

您可以为您的模板禁用 AJAX。或者,查看此处概述的其他方法: