LoginSignup
4
7

More than 5 years have passed since last update.

JavaScript疑似プロトコルでの別窓展開

Last updated at Posted at 2016-02-08

やりたいこと

リンクでサイズ指定の別窓展開。ただし技術的制約として下記の条件がある。

  • システムの都合上、弄れるのはa要素のhref属性値のみ。
  • onclick属性も追加出来ないし、外部jsの読み込みも不可。

成功までの道のり

失敗コード1

<a href="javascript:window.open('hoge.html','new','width=800,height=600'); ">リンク</a>

結果

別窓は開くが、元ページがIE/Fxで [object] という表示に代わる。(Chromeは問題なし)

原因

undefined 以外が返るとページが書き換わるというHTMLの仕様。
下記のMS情報サイトにも同様の言及あり。

失敗コード2

<a href="javascript:window.open('hoge.html','new','width=800,height=600'); return false;">リンク</a>

結果

動かない

原因

関数外でreturnしているため Illegal return statement エラーが発生。

成功コード

<a href="javascript:window.open('hoge.html','new','width=800,height=600'); void(0);">リンク</a>

結果

別窓が開き、リンク元ページはそのまま(想定通り!)
void 演算子は与えられた式を評価し undefined を返す。

参考サイト

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7