人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

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

●質問者: takllin
●カテゴリ:ウェブ制作
✍キーワード:JavaScript リンク 属性
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● susie-t
●23ポイント

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

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

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

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

参考になれば幸いです。

◎質問者からの返答

ありがとうございます。


2 ● TNIOP
●23ポイント

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

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

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

◎質問者からの返答

ありがとうございます。


3 ● kidd-number5
●23ポイント

>> id:susie-tさん

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

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

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

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

◎質問者からの返答

ありがとうございます。


4 ● まきのっぴ
●23ポイント ベストアンサー

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

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">

◎質問者からの返答

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ