特定のリンクからページ遷移してきた時だけ、別の表示にしてほしいという要望がたまにあります。(ページ内にあるアコーディオンの2番目を開かせたい、ポップアップを開かせたい、など)
実装方法としてはいくつかありますが、今回はリンクにパラメータを付加して、そのパラメータに応じてJavaScriptで何らかの処理を行う方法を試してみます。
サンプルコード
HTML
遷移元のリンクにはパラメータを追加します。このパラメータの値に応じて処理を分けます。
<a href="https://cly7796.net/blog/sample/change-the-processing-by-the-parameters/index.html?pattern=typeA">遷移元リンク</a>
JavaScript
まずはパラメータを取得して、そのパラメータの値を確認するところまでやってみます。
// パラメータの取得
var params = [];
var param = location.search.substring(1);
if(param !== '') {
param = param.split('&');
}
for(var i = 0; i < param.length; i++) {
params[i] = param[i].split('=');
}
// パラメータの使用
var target = 'pattern'
for(var i = 0; i < params.length; i++) {
if(params[i][0] == target) {
alert(params[i][1]);
}
}
JavaScript
次に、パラメータの値に応じて処理を行ってみます。
// パラメータの取得
var params = [];
var param = location.search.substring(1);
if(param !== '') {
param = param.split('&');
}
for(var i = 0; i < param.length; i++) {
params[i] = param[i].split('=');
}
// パラメータの使用
var target = 'pattern';
var value;
for(var i = 0; i < params.length; i++) {
if(params[i][0] == target) {
value = params[i][1];
break;
}
}
switch (value) {
case 'typeA':
alert('typeAです');
break;
case 'typeB':
alert('typeBです');
break;
case 'typeC':
alert('typeCです');
break;
default:
alert('それ以外です');
break;
}
パラメータなしのデモページ
パラメータ「typeA」のデモページ
パラメータ「typeB」のデモページ
パラメータ「typeC」のデモページ
コメントが承認されるまで時間がかかります。