CODE-LIFE│コーディング・プログラミングのメモブログ

WEB製作の仕事を始めたMaruのhtml・CSS・jsメモブログ

<base target="_self">が効かない場合はJavaScriptで対応

js_black_icon

インラインフレームを使用する場合はフレーム内のリンクにtargetをつけなければ、フレーム内部でページが開かれてしまう。

これを回避するために使われるのが

上記を<head>内に記述すればリンクのtargetが全て親ウィンドウで開かれるようになる。

しかし、この<base>タグを記述しているにも関わらずtarget="_self"やtarget="_top"、target="_blank"などが効かない現象に陥ることがある。

その原因は・・・

 

JavaScriptととの競合

scriptにこれが入っている場合には<base>タグの指定が無効化されてしまう。

自分で記述した場合は原因がすぐに特定できるかもしれないが、ECCサイトなどで自動的に挿入されるscriptに記述されている場合もあるので要注意。

Yahoo!ショッピングのトリプルなどがこれにあたり、トリプルで作成したページをインラインフレームで読み込む場合に<base>タグが効かなくなる。

 

すべて<a>タグに直接

と記述すればtarget指定は可能ではあるがスマートなやり方ではない。

 

jQueryを利用して一括で<a>タグにtarget="_self"を付け加える方法

すべての<a>タグにtarget属性を付与していくのはなかなか面倒なもの。

<base>タグが使えないならscriptで一括挿入してしまおう。

上記を<head>~</head>内、もしくは</body>直前にコピー&ペーストすればOK。

まぁいろいろ使えるタグに規制のある楽天市場Yahoo!ショッピングECCサイトでもない限りインラインフレームを使うことなんて無いかもしれないけど仕事でたまたまこの壁にぶつかったのでメモ書きまでに。

 

 

確かな力が身につくJavaScript「超」入門

確かな力が身につくJavaScript「超」入門