WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

ハイパーリンクで window.open

by WebSurfer 2010年8月4日 12:18

ハイパーリンク(html の a 要素)を利用して小窓を開く場合、以下の例のようにするのがアクセシビリティの面で好ましいそうです。

<a href="xxx.html" 
  onclick="window.open(this.href, ...); return false;">
  小窓を開いて表示
  </a>

window.open(this.href, ...) の ... の部分には第 2, 3 引数が入ります。

第 2 引数は MDN の記事「window.open」によると以下のように設定するそうです。(以前は、特に指定する必要がなければ null で良いと思っていたのですが、'_blank' とした方がよさそうです)

  1. 新しいウィンドウの名前
  2. 既存のウィンドウに第 1 引数の url をロードしたい場合は既存のウィンドウの名前
  3. window.open で常に新しいウィンドウを開きたい場合は '_blank'

第 3 引数は、ウィンドウの大きさや、メニューバーの有無などを指定します。以下のような感じです。

'width=400, height=300, menubar=no, toolbar=no, location=no'

なお、href="window.open(...);" とするのはうまくいきません。小窓が開いた後、元ページは window.open(...) を表示しようとするからです。そういえば、昔、元ウィンドウが [object] という表示になってしまう理由が分からず、かなり悩んだことがありました。(汗)

href="window.open(...); retrun false;" とすれば上記の問題は避けられますが、JavaScript が無効だと小窓どころか何も表示されないので、アクセシビリティの面で好ましくないそうです。

表題とは関係ない話ですが、昔、上記の例のとおり DataGrid コントロールの HyperLinkColumn に設定するにはどうしたらいいか悩んだこともありました(特に onclick 属性の設定)。

調べてみると、HyperLinkColumn の中にできるのは HyperLink オブジェクトなので、DataGrid の ItemDataBound イベントのハンドラで HyperLink を探して、Attributes["onclick"] に無理やり window.open を設定した記憶があります。

そんな面倒なことをしなくても、ItemTemplate に HyperLink コントロールを配置すれば簡単にできたのに・・・いろいろと未熟だったなぁ。まぁ、今でもそうですけど。(苦笑)

Tags:

ASP.NET

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年4月  >>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

View posts in large calendar