私は、各リンクにベースURLとクエリパラメータを追加したい:javascriptでハッシュを含むurlに検索クエリのparamを正しく追加する方法は?
function buildURL(relativePath) {
var url = new URL('http://example.com/' + relativePath);
url.searchParams.set('utm_source', 'app');
return url.toString();
}
それはほとんどの場合に正常に動作します:
buildURL('search')
"http://example.com/search?utm_source=app"
buildURL('search?q=query&page=2')
"http://example.com/search?q=query&page=2&utm_source=app"
私はアンカーを追加するときに問題が開始されます。
buildURL('search#anchor')
"http://example.com/search?utm_source=app#anchor"
buildURL('search#anchor?q=query')
"http://example.com/search?utm_source=app#anchor?q=query"
これはアンカー付きの有効なURLではありません。
URLを使用してこれを克服する方法についてのアイデアはありますか?
EDIT
期待される結果がクエリが後のアンカー
buildURL('search#anchor')
"http://example.com/search#anchor?utm_source=app"
buildURL('search#anchor?q=query')
"http://example.com/search#anchor?utm_source=app?q=query"
function buildURL(relativePath) {
var url = new URL('http://example.com/' + relativePath);
url.searchParams.set('utm_source', 'app');
return url.toString();
}
console.log(buildURL("search"));
console.log(buildURL("search?q=query&page=1"));
console.log(buildURL("search#anchor"));
console.log(buildURL("search#anchor?q=query"));
3番目と4番目のケースでどのような出力が得られますか? –
期待される結果は「http://example.com/search?q = query&utm_source = app#anchor'ですか? – mplungjan
検索#.....?正規のURLフォーマットではありません – mplungjan