

URLにつけられるコンバージョンタグを移動先にも引き継ぎたいと思っています。  
aタグならば、事前にhrefに追記することで実現可能ですが、  
JSによる移動の場合はできません。そこで移動直前に調整しようと考えました。

下記のようなコードにて、Aタグ、もしくはJSで移動直前にURLの一部にパラメータを付加しようとしています。  
実現したいことは2つになります。  
１）移動先のURLを取得したい  
２）URLにパラメータを付加したい

１）については現在方法がわからない状態です。

２）については、下記の通り、イベントをキャンセルしてから、文字を追加してみました。  
しかしながら、  
Aタグについては移動すること自体できません  
JSでの移動では、キャンセルされず（？）最初のURLで移動してしまいます

汎用的に使えるように `beforeunload` を使っていますが、この使い方に無理があるでしょうか？

実現方法がありましたら、教えていただけると幸いです。  
よろしくお願いします。

[code]

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8" />
    <title>jQuery TIPS</title>
    </head>
    <body>
    <div id="outside">
      <p>
        <a id="inside" href="https://yahoo.co.jp/">ページ移動</a>
        <button id="otherUrl">ページ移動</a>
      </p>
    </div>
    
    <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
    <script>
    window.addEventListener('beforeunload', function(e) {
      e.preventDefault();
      e.stopPropagation();
      e.stopImmediatePropagation();
      window.location = window.location.href+"?2";
    });
    $(function() {
        $('#otherUrl').click(function(e) {
            location = window.location.href+"?3";
        });
        $('a').click(function(e) {
        e.preventDefault();
        window.location = location.href;+"?1";
      });
    });
    </script>
    </body>
    </html>
    
[/code]

【追記】  
コメントにありましたように「閉じる」「直接入力」もあるため、そもそも「移動先のURLを取得する」方法は無いのかもしれません。


CC BY-SA 4.0
2022-06-16T02:26:45.467
89408
2023-08-30T17:00:50.110
2022-06-19T12:05:08.527
7980
7980
question
javascript
javascriptで移動直前に移動先URLにパラメータを追加したい


移動時のイベントで移動先を取得できないなら、移動させる要素(aタグやbuttonタグ)にイベントを追加して、そこから移動先のurlを取ればいいと思います

[code]

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8" />
    <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
    </head>
    <body>
    <div id="outside">
      <p>
        <a id="inside" href="https://yahoo.co.jp/">ページ移動</a>
        <button id="otherUrl">ページ移動</button>
      </p>
    </div>
    
    <script>
    $(function() {
      $('#otherUrl').click(function(e) {
        e.preventDefault();
        location.href = location.href+"?3";
      });
      $('a').click(function(e) {
        e.preventDefault();
        location.href = e.target.href+"?1";
      });
    });
    </script>
    </body>
    </html>
    
[/code]


CC BY-SA 4.0
2022-06-21T14:47:12.863
89510
2022-06-21T14:47:12.863
53038
89408
answer