javascript - 如何在 squarespace 上添加 JavaScript 代码注入(inject)以更改 href 属性?

标签 javascript html css code-injection squarespace

我试图通过插入代码注入(inject)来更改我的 squarespace 网站上的链接。我正在添加以下代码:

<script>
  var element = document.getElementsByClassName('eventitem-backlink')[0];
  element.setAttribute('href', '/archive/2017');
</script>

但是,这不起作用,因为元素未定义。 document.getElementsByClassName 调用返回一个长度为 1 的列表,其中包含我要编辑的元素,但是当我尝试提取它时,它是未定义的。

当我运行以下代码时:

 console.log(document.getElementsByClassName('eventitem-backlink'));
 console.log(document.getElementsByClassName('eventitem-backlink')[0]);

它产生以下内容:

screenshot of console

最佳答案

您在此过程中调用该函数的时间过早。尝试:

<script>
  (function() {

    function fn() {
      var element = document.getElementsByClassName('eventitem-backlink')[0];

      if (element) {
        console.log('element found');  
        element.setAttribute('href', '/archive/2017');
      } else {
        console.log('element not found yet');    
        setTimeout(fn, 200);
      }
    }

    fn();
  })();
</script>

关于javascript - 如何在 squarespace 上添加 JavaScript 代码注入(inject)以更改 href 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45508112/

相关文章:

javascript - 使用 JavaScript 在眨眼时显示不同的文本?

javascript - 这个 ajax.js 代码有什么问题?

PHP,openId - 无法写入mysql

CSS一条有2种不同颜色的直线水平线

javascript - 未定义 Photoswipe UI 默认值

html - 视差导航菜单

javascript - 无效日期问题但日期无效

javascript - 从 JavaScript asp.net 调用按钮单击不起作用

html - Bootstrap 4 偏移类有问题

javascript - 获取第一个隐藏表单并显示它