自定义 JavaScript 仅在刷新后应用,为位置插件创建类别

您好,

下面的脚本会在位置插件中永久显示工具提示,并为其着色,以便根据其类型(事件、地点等)进行排序。我正在开发一个图例,也许还有一个过滤器。

情况是这样的:它确实有效,但仅在我刷新页面后才有效,当我通过 URL 访问该页面时无效。

两种情况下控制台中的错误没有区别,增加函数的延迟时间也没有起作用。

有人在从“编辑主题”菜单将 JS 添加到标题时遇到过这种情况并找到了解决方案吗?

这是结果的图片

这里的错误在有或没有代码的情况下都会出现,所以它们与代码无关

<script>
document.addEventListener('DOMContentLoaded', function() {
  // Apply CSS to change the alt text style
  var style = document.createElement('style');
  style.type = 'text/css';
  style.innerHTML = `
    /* Ensure alt text is bold, underlined, and has conditional color */
    .leaflet-marker-pane img[alt] {
      font-weight: bold !important; /* Make text bold */
      text-decoration: underline !important; /* Underline the text */
      white-space: nowrap; /* Prevent the text from wrapping to a new line */
    }
  `;
  document.head.appendChild(style);

  // Give the page a moment to load and the images to be rendered
  setTimeout(function() {
    var images = document.querySelectorAll('.leaflet-marker-pane img');

    images.forEach(function(img) {
      var title = img.getAttribute('title');
      if (title) {
        title = title.length > 10 ? title.substring(0, 10) + '..' : title;
        img.setAttribute('alt', title);
        img.setAttribute('title', title);

        if (title.includes('/')) {
          img.style.color = 'white';
        } else {
          img.style.color = 'black';
        }
      }
      img.setAttribute('src', '');
    });
  }, 1000);  // Delay execution by 1 second (1000 ms)
});
</script>

如果我没记错的话,因为 Discourse 是一个单页应用程序,我认为您必须使用插件 API 的 api.onPageChange() 来实现此目的。

4 个赞

好的,并且使用脚本很快就会被弃用。

2 个赞

很高兴知道,我将不会在 ember.js 框架中尝试使用自适应的 window.location.reload(true) 来处理页眉,这可能是一个解决方案。

页眉字段是出于安全原因而被弃用吗?问题是,在其中测试纯 JavaScript 仍然很方便。

不,在脚本标签(在标头中)中使用插件 api 是不推荐的。

1 个赞

好的,如果javascript在页眉中很快就会被弃用,我需要调整一些内容,也许这个页眉字段可以针对这种情况发布通知。

我猜它有它的原因,但可能有点可惜,因为页眉中的脚本很有用,可以实现快速调整,例如:当某个javascript函数匹配到特定类别时,关闭活动注册。

抱歉,我回复的是Jay,他说脚本将被弃用。我想他指的是像任何网站CMS一样方便用于快速修改的标题脚本。

我实际上找到了一个解决方案,每次进入“地图”页面时都会重新加载它。

我想知道如果页眉脚本将被弃用,是否值得在这里分享?此帖子中的脚本允许根据地图上事件标题的内容进行颜色分类,这应该可以快速更改,而不是通过 API 功能。

`

`

1 个赞

我认为你误会我了。我的意思是像 <script type="text/discourse-plugin"><script type="text/x-handlebars"> 这样的头部脚本标签已弃用,而不是普通的 <script> 标签。

2 个赞

是的,感谢您的澄清,很高兴我们能够使用 JavaScript,如果您有时间,可以看看我留下的代码,它在 Ember 环境中可能仍然有用,它会重新加载页面,这样 JavaScript 就能生效。它不是最优雅的,但对于地图插件页面来说效果很好!

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.