【问题标题】:Javascript grabbing URL parameters and appending to all pagesJavascript 抓取 URL 参数并附加到所有页面
【发布时间】:2020-10-02 00:05:09
【问题描述】:

我正在使用下面的脚本从我的索引页面中获取 URL 参数,现在我将如何将我获取的内容添加到我的网站上的任何链接/页面,用户接下来会去哪里?

我尝试将附加类添加到页面上已有的 href,但仍然没有任何内容转移到下一页。

<script>
    var qStr = window.location.href.slice(window.location.href.indexOf("?") + 1);
    if (qStr.indexOf("utm") > -1) {
      $(".append").each(function() {
        var $this = $(this);
        var _href = $this.attr("href");
        if (_href.indexOf("?") > -1) {
          $this.attr("href", _href + "&" + qStr);
        } else {
          $this.attr("href", _href + "?" + qStr);
        }
      });
    }
</script>

【问题讨论】:

    标签: javascript jquery url


    【解决方案1】:

    更简洁的方法是使用URLSearchParams API

    // modify location url for demo only
    history.pushState(null, null, '?id=10&utm_abc=abcd');
    
    const pageParams = new URLSearchParams(location.search)
    
    if ([...pageParams.keys()].some(k => k.includes('utm'))) {
    
      // every `<a>` has a search property
      $('a').prop('search', (i, curr) => {
        const linkParams = new URLSearchParams(curr);
        // loop over all the params in page url and append to link params
        pageParams.forEach((v, k) => linkParams.append(k, v));
        return linkParams
      });
      
    }
    
    // log updated href for demo
    $('a').each((_, el) => console.log(el.href))
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <a href="http://exaample.com?foo=bar&x=ffff">one - has params</a>
    <a href="http://exaample.com">two - no params</a>

    【讨论】:

    • 只获取第一个 URL 的参数,使用本地存储存储它,然后在每个其他页面上,运行一个 location.replace(window.location + "?" + parameters); 这样做不是更简单吗?这边?
    • 进行替换意味着重新加载页面。不太确定您要解决的更高级别的问题是什么。
    • 我只是在寻找最简单的解决方案来从第一个 url 中获取参数并将其附加到每个页面 url 的末尾
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2021-10-10
    相关资源
    最近更新 更多