JavaScriptのwindow.open()メソッド

window.openはwindowオブジェクトのメソッドで、新しいウィンドウを開く命令です。

window.open(“ウィンドウのURL”,”ウィンドウ名”,”オプション”)と書くと、新しいウィンドウを開くことができます。

<script>
function aiue() {
var w=window.open("https://homepage.wakabagari.com/", "_blank", "width=700,height=600,scrollbars=yes");
w.focus();
}
</script>

<input type="button" value="aaa" onclick="aiue()">

ウィンドウのURL部分には、当サイトのURLが入っています。URLを指定しない場合はabout:blankにしておきます。

ウィンドウ名に_blankとありますが、ここにはformのtargetプロパティで指定したウィンドウ名を記載するのが普通です。ない場合はnullを通常記載します。

オプション部分は、ググって適当に。ここでは700:600の画面で、スクロールバーをつける設定にしています。

タブブラウザが一般的となった今の時代においては、新規ウィンドウを開くといったら、タブとして開くか、もしくは別のウィンドウとして開くかの2つのケースを考えなければなりません。

form関連のプロパティ

formの中でinputされた内容をsubmitして。新規ウィンドウにデータを飛ばすパターンが多いかと思います。

以下フォーム要素のプロパティ・メソッド

プロパティ名 説明
elements form内のinput要素一覧
length form内のinput要素の数
name formの名前。JavaScriptから参照する時に利用する
acceptCharset formがサポートする文字セット
action formのaction要素
enctype formのcontent type
method データを送信する時に使用するHTTPメソッド
target actionの結果を書き込む対象
submit() データを送信する
reset() formを初期状態に戻す

submit()メソッドを実行する(form.submit())とsubmitボタンを押した時と同じようにデータがサーバに送信されますが、submitボタンを押した時とは違い、submitイベントは発火しない。onsubmitイベントハンドラも実行されない。そのためイベントハンドラを発火させたい時は、このメソッドを使用せず、submitボタンが押される必要があります。

form.targetでformのtargetプロパティを指定できます。formは、このtargetプロパティに指定されたフレームやウィンドウにsubmitの結果のレスポンスを描画します。プロパティを設定しない場合は自分自身のフレームになるのでページ遷移が発生します。


targetプロパティ値 結果を表示する場所
_blank 新規ウィンドウ
_self 現在のフレーム(ウィンドウ)
_parent 親フレーム
_top フレーム分割を解除してウィンドウ全体に表示
フレーム名、ウィンドウ名 指定しされた任意のフレーム(ウィンドウ)

上記例ではf.target="hoge"ですので、結果を表示する場所として任意のフレーム(hoge)を指定して、これに対してsubmitの結果を送ります。このケースではタブブラウザの場合はタブとして新規ウィンドウが開きます。

this.formのthisはinput要素を指しています。inputのformプロパティで属するフォーム要素を指定しています。

inputやselectのようなフォームコントロール要素の共通のプロパティは、以下のようになります。

プロパティ 説明
form 要素が属するフォーム要素
disabled 要素を無効とするか
name 要素の名前
type 要素のタイプ
value 要素の値
focus() 要素にフォーカスを当てる
blur() 要素からフォーカスを外す

さらにこれをタブではなく、新規ウィンドウとして開きたい場合にはformプロパティに加えてwindow.open()メソッド組み込みます。


submitの内容を送る任意のウィンドウをwindow.open()メソッドの中に指定する(f.target)することで、新しいウィンドウを開くことが出来ます。

そして、そのウィンドウのプロパティにfocus()メソッドを指定して、フォーカスを当てたら、そのformの内容をsubmitし、その内容が新規のウィンドウフレーム、rese2.phpというページに飛びます。

submitを押してしまうと親ウィンドウのページが切り替わってしまうので、formにonsubmitをreturn falseすること。

submit()はform要素のプロパティ、focus()はformコントロール要素のプロパティ、submit()メソッドとsubmitボタンによるsubmitイベントは挙動が異なることに注意します。

submitイベントだけが、formイベントのキャンセルやonsubmitイベントハンドラを実行できます。

紛らわしいtargetプロパティ

targetプロパティは上記のform要素のプロパティとして以外にも、他のonclickやaddeventlistnerのようなイベントハンドラの中でwindow.event.targetのような形で使用するケースもあります。この場合はそのイベントが起こった要素(inuptなど)をさすことに注意します。

window.event.targetプロパティはIEに対応していないので、window.event.srcElementというほぼ同じ命令(要素を選択)とイコールとして使用することが多いです。なぜならevent.srcelementがfirefoxに対応していないからです。

srcElementを使うと、firefoxがダメ、targetを使うとIEがダメというどっちつかずの状態を防ぐために、firefox用にイベントリスナを下記のように設定しておく方法があります。


こうすることでwindow.event.srcElementをFirefoxにも対応させることが出来ます。

  • 参考・引用元
    • パーフェクトJavaScript(書籍)

コメントor補足情報orご指摘あればをお願いします。

(件名or本文内でキーワード検索できます)



  • << 前のページ
  • 次のページ >>
ページトップへ