Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。
リンク先を新窓で展開するスクリプト。
  新窓展開は「target=“_blank”して~」などと未だに頻繁にオーダーが入るトリック。Javascript基礎中の基礎。わざわざ取り上げるまでもないくらい簡単なんですが、そういうモノほど、ちょっとした手を加えるのが楽しかったりします。
今回試してみた方法だと、HTMLを一切汚さず(無駄タグ、無駄属性無しで)にポップアップを展開できる。最近はこういうのが好き。
Sample
新窓展開サンプル | 新窓展開サンプル | 新窓展開サンプル
HTML
- <p id="sample">
- <a href="about:blank">新窓展開サンプル</a> |
- <a href="about:blank">新窓展開サンプル</a> |
- <a href="about:blank">新窓展開サンプル</a>
- <p>
Script
- window.onload = getSrc;
- function getSrc() {
- var x = document.getElementById('sample').getElementsByTagName('a');
- for (var i=0; i<x.length; i++)
- {
- x[i].onclick = function () { return openWin(this.href); }
- x[i].onkeypress = function () { return openWin(this.href); }
- }
- }
- function openWin(target) {
- open(target);
- return false;
- }
memo: 上記サンプルだと#sample内の<a>タグが対象となる ...が、もちろん変数xの指定を変えれば、自由に変更可能。
仕様メモ: window.open()
- 書式
- window.open(url, name [, style])
- 例文
- window.open("test.html", "Test", "width=200,height=200");
| プロパティ | 概説 | 
|---|---|
| _blank | 名前無しの新しいウィンドウ。 | 
| _self | 自分自身のフレーム(ウィンドウ)。 | 
| _parent | ひとつ親のフレーム(ウィンドウ)。 | 
| _top | トップフレーム(ウィンドウ)。フレームが無ければ自分自身。 | 
memo: frameタグのname属性、もしくはウィンドウ・ネームに対応
memo: ハイフン(-)を含む名前を指定するとエラーになることもある。
| プロパティ | 概説 | 
|---|---|
| width=n | ウィンドウの横幅。 | 
| height=n | ウィンドウの高さ。 | 
| location=yes|no | ロケーションフィールドの表示。 | 
| menubar=yes|no | メニューバーの表示。 | 
| toolbar=yes|no | ツールバーの表示。 | 
| scrollbars=yes|no | スクロールバーの表示。 | 
| status=yes|no | ステータスバーの表示。 | 
| titlebar=yes|no | タイトルバーの表示。 | 
| directories=yes|no | ディレクトリボタンの表示。 | 
| resizable=yes|no | リサイズを可能にする。 | 
| top=n | ウィンドウの位置(画面の上端からの距離)。 | 
| left=n | ウィンドウの位置(画面の左端からの距離)。 | 
memo: 複数指定する場合は、カンマで連結。
memo: カンマの前後にスペースを入れると、動作しないブラウザもある。
Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。
4 Comments
よく読めばわかるのですが、一応。 2006–11–28 06:57
前に対処したんですが、CSS上書きしちゃったみたいです。今は見え「は」するはず... どよ? 2006–11–28 11:24
ありがとうございます。
コードの折り返し問題は難しいですね。
スクリプトにあわせて新窓で開くと良いかも? 2006–11–28 20:11
現状で雰囲気つかめてれば良いかな、と。
いちおJSソースへの直リン張っときました。
IEで見ると面白いかもしらん。 2006–11–29 00:45