基本的に私はこのようなURLを渡そうとしています:
www.foobar.com/?first=1&second=12&third=5
このようなURLに:
http://www.facebook.com/sharer.php?&t=FOOBAR&u=http://www.foobar.com/first=12&sec=25&position=2
最初のパラメーターのみを認識します。私はLinkedInとTwitterの共有で同じ問題を抱えているので、間違いを犯しているに違いありません。
URLパラメータをhtml encoding
ではなく、URL encode
する必要があります。
http://www.facebook.com/sharer.php?&t=FOOBAR&u=http%3A%2F%2Fwww.foobar.com%2F%3Ffirst%3D12%26sec%3D25%26position%3D
ほとんどの言語でこれを簡単に行うことができます- javascript :
var encodedParam = encodeURIComponent('www.foobar.com/?first=1&second=12&third=5');
// encodedParam = 'http%3A%2F%2Fwww.foobar.com%2F%3Ffirst%3D12%26sec%3D25%26position%3D'
(他の言語にも同等のメソッドがあります)
2番目のURLに?
がありません(また、%3F
になるようにURLエンコードする必要があります)。
また、残りの&
はHTMLエンコードではなくURLである必要があると思います。 &second=12&third=5
を%26second=12%26third=5
に変更すると、すべてが正常に機能するはずです。
この:
&u=http://www.foobar.com/first=12&sec=25&position=2
する必要があります:
&u=http://www.foobar.com/%3Ffirst=12%26sec=25%26position=2
JQueryでは、次を使用できます。
let myObject = {first:1, second:12, third:5};
jQuery.param(myObject);
Doc: http://api.jquery.com/jquery.param/ 出力:first = 1&second = 12&third = 5これにより、オブジェクトに含まれているものは何でもフォーマットされます。
例では、渡されたURLの一部はURLエンコードされていません(たとえば、コロンは%3Aであり、スラッシュは%2Fである必要があります)。パラメータをパラメータURLにエンコードしているようですが、パラメータURL自体はエンコードしていないようです。同様にエンコードしてみてください。 encodeURIComponent
を使用できます。
ソーシャル共有リンクに問題があるようです。ある時点で似たような問題があり、この質問を見つけましたが、完全な答えは見当たりません。以下からの私のjavascript解決が役立つことを願っています:
共有されているURLに追加のUTMパラメーターが連結されるように変更する必要があるデフォルトの共有リンクがありました。
私の例はFacebookのソーシャル共有リンクですが、考えられるすべてのソーシャル共有ネットワークリンクで機能します。
共有する必要があるURLは次のとおりです。
https://mywebsitesite.com/blog/post-name
デフォルトの共有リンクは次のようになりました。
$facebook_default = "https://www.facebook.com/sharer.php?u=https%3A%2F%2mywebsitesite.com%2Fblog%2Fpost-name%2F&t=hello"
最初にデコードしました:
console.log( decodeURIComponent($facebook_default) );
=>
https://www.facebook.com/sharer.php?u=https://mywebsitesite.com/blog/post-name/&t=hello
次に、URLをエンコードされた新しいURL(UTMパラメーターを連結したもの)に置き換えました。
console.log( decodeURIComponent($facebook_default).replace( window.location.href, encodeURIComponent(window.location.href+'?utm_medium=social&utm_source=facebook')) );
=>
https://www.facebook.com/sharer.php?u=https%3A%2F%mywebsitesite.com%2Fblog%2Fpost-name%2F%3Futm_medium%3Dsocial%26utm_source%3Dfacebook&t=2018
それでおしまい!
完全なソリューション:
$ facebook_default = $( 'a.facebook_default_link')。attr( 'href');
$( 'a.facebook_default_link')。attr( 'href'、decodeURIComponent($ facebook_default).replace(window.location.href、encodeURIComponent(window.location.href + '?utm_medium = social&utm_source = facebook')));