WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:HTMLとJavascriptで二重引用符が重複する

0:[投稿] emi [2003/04/18 18:59 ][環境:win2000 Perl, CGI]

下のようにクリックするとリンク先を開くボタンを作りたいのですが、

<INPUT TYPE="button" value="リンクを開く" onClick="window.open("http://www.yahoo.co.jp")">

HTML中で二重引用符を使っているのでjavascript の二重引用符とかぶってしまいます。
これはどのように書けばよいのでしょうか?

Perlのようにして下のように書きましたがエラーが出ました。
<INPUT TYPE="button" value="リンクを開く" onClick="window.open(\"http://www.yahoo.co.jp\")">

どうぞご指導のほどよろしくお願いします。


1:[回答] こねこねこ [2003/04/18 19:06 ]

二重引用符の中では一重引用符を使います。

<INPUT TYPE="button" value="リンクを開く" onClick="window.open('http://www.yahoo.co.jp')">


2:[質問] emi [2003/04/18 19:23 ]

すいません、どうしても気になるので教えてください。
二重引用符ではどう頑張っても書けないのですよね? 書けないとわかれば諦めもつきますので。


3:[回答] のぐりん [MAIL] [2003/04/18 21:23 ]

二重引用符を以下のように重ねても書けます。
でも、一重引用符の方が安全だし、一般的です。
"window.open(""http://www.yahoo.co.jp"")"


4:[回答] ... [2003/04/18 23:41 ]

<input type='button' value='リンクを開く' onclick='window.open("http://www.yahoo.co.jp")'>

逆にすればよいのでは?


5:[完了] emi [2003/04/19 07:53 ]

みなさま、どうもありがとうございました。
一重引用符がスマートと言う事ですね。
大変勉強になりました。ありがとうございました。


6:[完了] ma-to [2003/04/19 09:43 ]


属性 (イベント属性と呼ばれるonclick) の値だ。text/htmlはテキストファイルとしてHTMLの規則で解析される。その結果が所謂スクリプトエンジンに渡される。具体的には、
http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.2.2
に書かれている通り、&quot;または&#34;を用いて、
    onclick="window.open(&#34;http..&#34;)"
となる。ブラウザはこれを正しく解釈しなければならない。

因みに、スクリプトの規則でエスケープした場合、最初に登場する2つの引用符に挟まれた「window.open(\」がその属性の値になる。続く「http://..」は、HTMLの規則に従わないから、言わば、親切な実装により無視されるだろう。

。。。という回答が欲しかったのだと思われる。


関連

script要素の内容として書かれた場合は例外的な処理がされると、
http://www.w3.org/TR/html401/types.html#type-cdata
に書かれている。

因みに、クライアントサイドのJavaScriptでは、「<!--」は「//」として解釈される。しかし、対応する「-->」はゴミでしかない。従って、「//-->」とコメントアウトする。
一対の
    <!--
    //-->
は、JavaScriptを知らないUAにとっては、
    <!--
    -->
というHTMLのコメントになるし、知るUAにとっては、その一対も含めた全てがそのままスクリプトエンジンに渡される生のテキストになる。スクリプトエンジンにとってその一対は、
    //
    //
と解釈される。

urn:isbn:0596000480
の20.3に書いてある。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World