• 締切済み

リンクをJavascriptで実装している理由は?

大手の会員制サイトなどで、リンクがAタグではなくJavascriptで実装されているものがあります。なぜわざわざJavascriptで実装しているのでしょうか? 私の個人的なネットサーフィンのやり方として、リンクをCtrlボタンを押しながらクリックして新しいタブで開いてます。target="_blank"と指定されたAタグをクリックしても新しいタブが開きますが、Ctrl+クリックは画面が切り替わらないので、例えばメールボックスで見たいメールへのリンクを先に一通り開いておき、後で「メールを見る」という作業だけを連続的に行え、効率的です。 しかしJavascriptで実装されたリンクはクリック時、Ctrl(新しいタブで開く)やShift(新しいウィンドウで開く)を押していてもそれが効かず、スクリプト側の制御に委ねられる形になります。これは不便ですし、スクリプトを組む手間もかかるやり方だと思います。なぜわざわざこのような方法を使っているのでしょうか? 以下、私の予想です。 (X)HTMLの今後の仕様として、「target属性を廃止し、どのような方法でリンク先へジャンプするかはユーザに選ばせる」という動きがあるそうだが、制作者側がジャンプ方法を強制する為にJavascriptを使ったのか。しかし会員制サイトのような特にユーザ主体性の大きいサイトがユーザの利便性(操作性)を奪うような方法をとるだろうか。また、新しい仕様はまだ一般的には浸透していないので先走ってそれに合わせたということは前述の理由から考えにくいし、(X)HTMLはマークアップ言語なので仕様に沿っていないことによる不利益はSEOぐらいしか考えられない(SEO対策は重要だが)。また、pdfなどのバイナリデータがトップにヒットするケースもあるので、不利益といってもどの程度のものかは不確かである。

みんなの回答

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

私が際kに携わったシステムで話をすると > Ctrl(新しいタブで開く) > Shift(新しいウィンドウで開く) をやってほしくないためにわざわざJavaScriptを使ったわ。 複数の画面で同時に処理をされたりすると いろいろ不整合が起きたりするのよ。 それを防止するのには最適ね。 シンプルな例だと 2つの画面で商品の金額を書き換えたとき どっちを有効にするかとかね。 先優先とかでいいんじゃないとか言わない。 あくまで例なんだから。 あとはリンクをクリックしたときに いろいろ処理をしたい場合ね。 #1さんのようにcoolieへの書き込みをJavaScriptで行うとか あと、画面にリンクが異常に沢山あって送信パラメータが共通の場合 JavaScriptで差異部分だけ渡してあげれば 画面全体のファイルサイズを小さくできるといった使い方もあるわ。 今までの経験上最大の理由は やっぱりデータの不整合の防止ね。

回答No.1

理由はいくつか考えられます。 ・robots.txtを無視する検索ロボットに進入されないようにする。 ・ページの表示順(クリックした順番)や滞在時間などのアクセス動向を調査する。 ・何らかのセキュリティーに関する内容の隠蔽。(ページを開くと同時にcookieの代わりのデータを送信するなど) > これは不便ですし、スクリプトを組む手間もかかるやり方だと思います。 閲覧者の都合はわかりますが、制作者にも都合はあります。 手間をかけてまでスクリプトを書く必要があるから、スクリプトを作ったのでしょう。 W3Cからは制作者の都合は無視すべきだ、とか言われそうですが、現実問題としてそうは行かないと思います。 target属性が廃止されるのはXHTMLだけで、HTMLは引き続きtarget属性もフレーム(iframeのみ。framesetは廃止)も残ります。 これにより、入力フォームなどの使い方を書いた画面をtarget="_blank"で表示するなどして、同時(交互に)に見られるようにも出来ます。

関連するQ&A