<a href="#" onClick="javascript:window.open('XXXXXXXX')">リンク</a>


というjavascriptで別ウィンドを開きたいのですが、onKeypress属性をつけるのが正しいと聞きました。

いろいろ試すのですがonKeypressをつけるとうまく動きません。

どうやって書いたらいいでしょうか?

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2007/04/20 09:34:42
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:pmakino No.4

回答回数358ベストアンサー獲得回数30

ポイント23pt

聞きました、というのは以下のことかと思います。

Another HTML-lint 結果の解説 - ATTRA 属性を使うときは ATTRB 属性も指定しましょう。

ウェブコンテンツ・アクセシビリティ・ガイドライン1.0 技術書 9.3 スクリプトを使用する場合は、装置に依存するイベントハンドラではなく、論理イベントハンドラを指定する。

onClick 属性はマウスでしか使えないイベントなので、キーボードでも使えるよう onKeypress 属性「も」設定しておきましょう、ということなのですが、ひょっとして onKeypress「だけ」設定して、onClick は削除されていたりしないでしょうか?


なお、蛇足ですが、href 属性の値として # や javascript:void(0) 等の無意味な値を設定するのは、アクセシビリティ・ユーザビリティ上あまり好ましくありません。

下記のように、href 属性ではあくまで普通にリンク先を記載し、イベント属性からは this.href で参照するのがより良いかと思われます。

<a href="XXXXXX" onclick="window.open(this.href);return false" onkeypress="window.open(this.href);return false">

id:takllin

ありがとうございます。

2007/04/20 09:33:47

その他の回答3件)

id:susie-t No.1

回答回数99ベストアンサー獲得回数18

ポイント23pt

onKeypress属性はその要素上でキーが押されたときのイベントなので、マウスクリックでは動作しません。

たぶん、onKeypress属性は要らないと思います。

考えられるのは、リンクにフォーカスを当ててEnterを押してもonClickが呼ばれない場合のために、onKeypressでEnter押下を検知し、スクリプトを実行するということですが・・・。そういう事例は聞いたことがないです。

逆に、多くのブラウザはリンク上でEnterを押すと、onClickもonKeypressも呼ばれてしまうので、気をつけないとウィンドウが2つ開いてしまいます。

参考になれば幸いです。

id:takllin

ありがとうございます。

2007/04/20 09:33:40
id:TNIOP No.2

回答回数2344ベストアンサー獲得回数58

ポイント23pt

http://www.koikikukan.com/archives/2007/03/30-003838.php

サムネイルをポップアップ表示する HighSlide JS で onclick 属性および onkeypress 属性を JavaScript で自動的に登録する方法です。

ここでは Movable Type と WordPress プラグインを例に説明します。

id:takllin

ありがとうございます。

2007/04/20 09:33:42
id:kidd-number5 No.3

回答回数117ベストアンサー獲得回数15

ポイント23pt

>> id:susie-tさん

> たぶん、onKeypress属性は要らないと思います。

アクセシリビリティのことを言ってます。

http://htmllint.itc.keio.ac.jp/htmllint/explain.html#event-pair

どのように「うまく動かないか」を書いていただけないと、ちょっと理由はわからないと思います。

id:takllin

ありがとうございます。

2007/04/20 09:33:44
id:pmakino No.4

回答回数358ベストアンサー獲得回数30ここでベストアンサー

ポイント23pt

聞きました、というのは以下のことかと思います。

Another HTML-lint 結果の解説 - ATTRA 属性を使うときは ATTRB 属性も指定しましょう。

ウェブコンテンツ・アクセシビリティ・ガイドライン1.0 技術書 9.3 スクリプトを使用する場合は、装置に依存するイベントハンドラではなく、論理イベントハンドラを指定する。

onClick 属性はマウスでしか使えないイベントなので、キーボードでも使えるよう onKeypress 属性「も」設定しておきましょう、ということなのですが、ひょっとして onKeypress「だけ」設定して、onClick は削除されていたりしないでしょうか?


なお、蛇足ですが、href 属性の値として # や javascript:void(0) 等の無意味な値を設定するのは、アクセシビリティ・ユーザビリティ上あまり好ましくありません。

下記のように、href 属性ではあくまで普通にリンク先を記載し、イベント属性からは this.href で参照するのがより良いかと思われます。

<a href="XXXXXX" onclick="window.open(this.href);return false" onkeypress="window.open(this.href);return false">

id:takllin

ありがとうございます。

2007/04/20 09:33:47

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません