javascript 复制URL参数并将其注入另一个URL

6za6bjd0  于 2023-02-28  发布在  Java
关注(0)|答案(2)|浏览(152)


我必须复制当前页面URL的参数,并将它们注入到一个新的URL中,放置在同一个当前页面上的按钮的href中。该页面是由WordPress + Divi制作的。
所以我为触发脚本的按钮设置了一个自定义ID。我的脚本相当复杂,我想它可以简化,但它工作正常...直到我尝试在href按钮中注入新的URL。
因此,我的目标是https://website.com/new-url/?f=John&l=Doe&从“www.example.com...”获得“https://website.com/current-url/?f=John&l=Doe&...”,并将新URL放在当前URL上的href按钮中
如果有人能帮助我,我先谢谢他!
下面是我的代码:

function getParameterByName(name, url = window.location.href) {
    name = name.replace(/[\[\]]/g, '\\$&');
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
var f_value = getParameterByName('f');
var l_value = getParameterByName('l');
var e_value = getParameterByName('e');
var ph_value = getParameterByName('ph');
var id_value = getParameterByName('id');
(function( $ ) {
    $( "#js-caller" ).on( "click", function( event ){
        const myUrlWithParams = new URL("https://website.com/new-url/");
        myUrlWithParams.searchParams.append("f", f_value);
        myUrlWithParams.searchParams.append("l", l_value);
        myUrlWithParams.searchParams.append("e", e_value);
        myUrlWithParams.searchParams.append("ph", ph_value);
        myUrlWithParams.searchParams.append("id", id_value);

        console.log(myUrlWithParams.href);
        alert(myUrlWithParams);
        event.preventDefault();
    });
})(jQuery);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
function getParameterByName(name, url = window.location.href) {
    name = name.replace(/[\[\]]/g, '\\$&');
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
var f_value = getParameterByName('f');
var l_value = getParameterByName('l');
var e_value = getParameterByName('e');
var ph_value = getParameterByName('ph');
var id_value = getParameterByName('id');
(function( $ ) {
    $( "#js-caller" ).on( "click", function( event ){
        const myUrlWithParams = new URL("https://website.com/new-url/");
        myUrlWithParams.searchParams.append("f", f_value);
        myUrlWithParams.searchParams.append("l", l_value);
        myUrlWithParams.searchParams.append("e", e_value);
        myUrlWithParams.searchParams.append("ph", ph_value);
        myUrlWithParams.searchParams.append("id", id_value);
        console.log(myUrlWithParams.href);
        alert(myUrlWithParams);//for testing the new url (and it works!)
        event.preventDefault();//to stop the Divi default event
    });
})( jQuery );
z5btuh9x

z5btuh9x1#

var currentUrl = 'https://website.com/current-url/?f=John&l=Doe';
var newUrl = 'https://website.com/new-url/';
var indexOfQuestionMark = currentUrl.indexOf('?');

console.log(newUrl + currentUrl.slice(indexOfQuestionMark));

如果你只想把查询字符串复制到另一个url,你不需要把它分成块,只需要把它切下来并附加到另一个url。

t0ybt7op

t0ybt7op2#

window.location.search返回参数,假设当前URL是https://example.com?utm_source=ap&utm_medium=email&utm_campaign=intro&utm_id=eml
并且您希望在页面中复制(包括)这些查询参数,并提供指向https://app.example.com的链接,您可以简单地...

const url = `https://app.example.com${window.location.search}`;

它将返回https://app.example.com?utm_source=ap&utm_medium=email&utm_campaign=intro&utm_id=eml

相关问题