【问题标题】:Squarespace: Adding a jquery plugin on a blog postSquarespace:在博客文章中添加 jquery 插件
【发布时间】:2020-08-25 07:54:54
【问题描述】:

我正在尝试将 elevateZoom jquery 插件 (https://www.elevateweb.co.uk/image-zoom/) 添加到我的网站。然后,我尝试将此页面上的特定图像调用它:https://www.meridianacademy.org/division3-humanities/2020/5/6/civil-rights-quilt

我已将插件作为链接上传,并通过代码注入将其添加到我的网站头部。

然后我通过代码块在页面上调用它:

<script>
$(document).on('ready', function () {
    $("#block-yui_3_17_2_1_1588791147485_100779").elevateZoom({
zoomType: "inner",
cursor: "crosshair",
zoomWindowFadeIn: 500,
zoomWindowFadeOut: 750
   }); 
});
</script>

但它似乎不起作用。任何帮助将非常感激。谢谢!

【问题讨论】:

  • 这里有一些问题与您有关。为了帮助提供一个可靠的答案,您能否说 1)您是否在网站的其他地方或仅在该页面上使用(或可能使用)JQuery 以及 2)您是否在其他页面上使用(或可能使用)ElevateZoom 或仅此特别是页面?
  • @Brandon 我在网站的其他地方使用 JQuery,将来可能会添加更多。是的,如果我能让它工作,我可能最终也会在其他页面上使用 ElevateZoom。感谢您查看问题。

标签: jquery jquery-plugins squarespace


【解决方案1】:

在这方面似乎有 4 个潜在问题不利于您。

  1. 由于 Squarespace 使用 Content-Disposition: Attachement 标头响应,脚本 /s/jqueryelevateZoom-308min.js 未加载。我想这就是 Squarespace 为 /s/ 文件夹中的资产设置的方式。以前不是这样,但现在似乎是这样。

  2. on ready JQuery 事件可能不会在适当的时间触发。

  3. 由于 Squarespace 基于 JavaScript 的动态图像加载器,将被缩放的源图像可能不够大。

  4. 您应该定位该图像块 div 内的 img 元素,而不仅仅是图像块 div 本身。

要解决所有这些问题,请执行以下操作:

在标头代码注入中,将&lt;script src="/s/jqueryelevateZoom-308min.js"&gt;&lt;/script&gt; 行替换为jqueryelevateZoom-308min.js 文件的实际内容,粘贴在打开和关闭&lt;script&gt; 标记之间。所以它看起来像这样:

<!-- Plugin elevateZoom -->
<script>
window.Squarespace.onInitialize(Y, function() {
// copy and paste contents of the script here
});
</script>
<!-- end Plugin elevateZoom -->

然后,在其下方添加以下脚本。

<!-- Initialize elevateZoom -->
<script>
window.Squarespace.onInitialize(Y, function() {
  var eZImgs = [
    {
      selector: "#block-yui_3_17_2_1_1588791147485_100779 img",
      settings: {
        zoomType: "inner",
        cursor: "crosshair",
        zoomWindowFadeIn: 500,
        zoomWindowFadeOut: 750
      }
    } // Add more comma-separated objects after this object to init elevateZoom on other images on the site.
  ];
  var i = eZImgs.length;
  var el;
  while (i--) {
    el = $(eZImgs[i].selector);
    if (el) {
      el.attr("src", el.attr("src").replace(/\?format\=.*w$/, "?format=original"));  // Load the original image, not the dynamically-loaded, smaller image.
      el.elevateZoom(eZImgs[i].settings);
    }
  }
});
<script>
<!-- end initialize elevateZoom -->

最后,从您之前添加的代码块中删除代码。

【讨论】:

  • 我已经进行了所有这些调整,但它似乎仍然无法正确触发。有什么额外的想法吗?控制台似乎没有将“el.elevateZoom”识别为函数。
  • 有趣。它在您的站点加载后在控制台中复制/粘贴时起作用。所以,这只是时间问题。两个想法: 1) 请参阅上面已包装在 Squarespace onInit 函数中的第一个代码 sn-p 的更新。试试看,如果不行,那就试试 2) 删除每个代码 sn-p 的第一行和最后一行(即从 squarespace.onInit 函数中解开代码)并将两个 sn-ps 移动到页脚代码注入区域而不是 Header 代码注入。您可以将 JQuery 脚本留在标题中。
  • 添加 Squarespace onInit 函数做到了——谢谢,布兰登!
猜你喜欢
  • 2016-05-18
  • 1970-01-01
  • 2020-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
相关资源
最近更新 更多