|
Heidi Housten
Tom Moran
Rafael M. Muñoz
Kusuma Vellanki
Microsoft Corporation
January 1, 2001 日本語版最終更新日 2001年4月5日
この記事は、もともと MSDN Online Voices のコラム "Web Team Talking" に掲載されたものです。
とうとう、私たちの家族 W-E-B M-E-N の皆さんにさようならを言うときが来ました。もう、たぶん読者の皆さんは気付いていることでしょう。Web Team の Web Men は絶えず入れ替わっています。Web Men との懐かしい思い出を尋ねる前に、まずこの Web Team Talking コラムが今後も続いていくということをお話して皆さんにご安心頂きましょう。今後このコラムを継続していくために、Kusuma と Heidi と一緒に働く 2 人の優れたメンバを見つけました。
異動するにあたって、私たちをこれまで支えてくれた、私たちの家族である皆さんに感謝したいと思います。私たちは、毎月 Team の話を理解するために、ワシントン ポストやウォール ストリート ジャーナルを片付けてくれた、忠実で、誠実な読者がいたことを知っています。そんな読者の皆さんに「ありがとう」と言わせてください。
新しい Team が彼らの旅を始めることになる 2
月になったら、過去の記事を遡って調べ、私たち家族の伝統が引き継がれていることを確認してください。その前に、今月は少し記憶をたどり、開発者として私たちがここまで歩んできた道を振り返ってみたいと思います。楽しんでください。そして、ここ数年間で変化してきたことを思い出してください。いくつかの質問や答えには、おそらく今日ではもっと優れたソリューションが存在します。
思い出に感謝します。
Rafael と Tom
私たちが、最初の編集者としてはじめに書いたことは、「webtalk@microsoft.com
に質問を送ってください。隣の部屋にいるプログラマに質問するにはきまりが悪いことでも結構です。」でした。
これは、いまでも、そしてこれからも変わらないことです !
目次 滑らかなナビゲーション
- ドロップダウン リスト ボックスの構築 この記事は 1997 年 6 月 23 日に公開されました
日付を求めていますか
? この記事は 1999 年 5 月 3 日に公開されました。西暦 2000 年問題を思い出してください !
俳句コンテスト - 俳句を募集したときのことを覚えていますか ? この記事は 1999 年 6 月 7 日に公開されました。
前後への移動 - ブラウザの [戻る]/[進む] ボタンを無効にする この記事は 2000 年 7 月 3 日に公開されました。
滑らかなナビゲーション
Web Men の皆さんへ
Site Builder Network ホーム ページの左側のペインには、ドロップダウン メニューが配置された International
サイトの選択条件があります。通常、ドロップダウン メニューは [送信] ボタンを伴っています。[送信]
ボタンを伴わない、多くの選択肢を持つメニューを作成する方法を知りたいのですが。選択肢の 1
つを選択したときに、ハイパーリンクまたはその他の方法でリンクされたドキュメントに移動する必要があります。このドキュメントは別のフレームに表示される必要があり、通常このフレームはより大きなコンテンツを表示するために使用します。
よろしくお願いします。
Raja Rajagopalan
Web Men の回答
驚いたでしょ Raja ! Web Men はどこにでもいるんですよ。実際には、Raja はこの質問を私たちのお気に入りのコラムニストの Mary
Haggard に送りました。彼女は、私たちがこの手のことを扱っていることを知っていたので、すぐにこの質問を私たちに転送しました。
さて、あなたはドロップダウン リスト ボックスを使用し、Site Builder Network ホーム
ページが行っているように、別のフレームで表示されるように「自動的に魔法のように」リンクを導きたいのですね。これは、JavaScript
の魔法を使えば非常に簡単です。以前のコラムで紹介したので、出力をほかのフレームに導くことは非常に簡単であることは既にご承知のとおりです。私たちはドロップダウン
リスト ボックス メニューを持つ小さなフォームをサンプルとして作成しました。
ドロップダウン リスト ボックス サンプルの表示。
ソース コードの表示。
サンプルを調べれば、私たちがこっそりと行っていることが何もないことに気付くでしょう。[送信] ボタンを持たない、ドロップダウン リスト
ボックスを使用して、サイトに滑らかにナビゲーションする方法を作成しました。
日付を求めていますか ?
Web Men の皆さんへ
私たちはフォーム上に MM/DD/YY の形式で入力した日付を持っています。この日付の年を 4 桁の形式に変更したいと思っているのですが。
Jerry Thompson
Web Men の回答
あなたが実際に行おうとしていることの背景をあまり提供してくれなかったので、これは見た目ほど単純ではありません。最初は、日付を変換し、それを検証し、ユーザーが検証するためにそれを表示する方法をあなたに示すために、極めて小さく、簡単なサンプルを作成しました。しかし、ディズニーのアラジンのジーニーの言葉を引用すると、「あのー、得られるものはほんのちょっと、そのー、条件付きなら
2、3 かなー...」。これは非常に危険な西暦 2000
年問題の分野です。日付を使って作業する方法を理解する際には、かなり努力する必要があります。あなたが行いたいことをいくつか仮定して、行う必要のあることの基本的な流れを以下に示します。
- 日付の検証。 ユーザーは適切な日付を入力したのですか、それともいいかげんな数値を入力したのですか ?
この検証はスクリプトを使って、クライアント側で行います。
- 日付を 4 桁の日付としてユーザーに表示。
その形式で日付を入力するように注意を促すことと、年が正しい世紀になっているか確認することの両方の意味があります。日付変換では、2
桁の年がどの世紀の年を表しているかに関して、知的な推測を行います。しかし、状況に応じて正しい変換が行われているか確認する必要があります。
- 日付の再検証。
ユーザーに日付を検証する機会を提供した後に、その日付を再検証します。最終的に、再度日付を変更することになるかもしれません。
- 正しく保存。
使用しているテクノロジ、および後でその日付をどのように使用するかによって、ここで検討することはさまざまです。その日付を使用して何らかの比較を行う予定がある場合は、日付がどのように保存されているか正確に理解するようにしてください。時には、時刻も同時に保存されることもあります。正確に理解しておかないと、予期しない結果が生じることがあります。
- 見かけを正しくするために、地域設定や短い形式の日付を変更することは避けてください。
これは適切なアプローチとは言えません。
上記でも指摘したように、これはかなり複雑になる可能性があります。これが簡単に解決できる問題であったならば、東ワシントンに住宅を購入することもなかったでしょう。ただし、太陽熱温水器も購入したので、文明の崩壊に直面しても、Web Men Talking はあなたのご質問に答えることができるでしょう。
実際に俳句を書いてみました !
私たちの小さな俳句コンテストに予想以上にたくさんのエントリを受け取りました。明らかに、ほとんどの皆さんが私たちより上手に俳句を作っていしました。水準からかけ離れたものはありませんでした。以下にお気に入りを
4 つ紹介します。
Sweet Mother of God You want me to write
Haiku? Get a %!@##ing life!
投稿者 Dave Moyses |
People like Web sites That have nice
flashy graphics But not me, too slow
投稿者 Chris Williams |
My ActiveX doc Displaying in the
browser. Finally, it WORKS
投稿者 Dwayne Macadangdang |
"Make it cross-browser." "The deadline
is yesterday." Oh death, where is thy sting?
投稿者 Jonathon Brownell |
一般的には、俳句は 5-7-5 の音節から成り立っていると考えられていますが、厳格な規則ではありません。
前後への移動
Web Team の皆さんへ
ブラウザの [戻る]/[進む] ボタンを無効にする方法があれば教えて貰えませんか ? クライアントが Web
サイトにいるときに、以前に表示したページをブラウズすることを許可できないというのがその理由です。
[戻る]
ボタンを無効にするだけでもよいのですが、今のところ残念ながらそれすらできていません。ブラウザの履歴リストを削除できれば、ブラウザが前のページに戻せなくなるのではないかと考えましたが、それもだめでした。
[戻る] ボタンのイベントをキャッチし、VBScript を使って同じページにリダイレクトする方法を見つける必要があります。
Serge Dufour
Web Team の回答
Serge、私たちはあなたの質問に対する答えをたくさん持っています。私たちが持っている答えをすべてあなたに返してみることに決めました !
心の準備をしてください。では、始めましょう。
既にお分かりのように、スクリプトを使ってセッションの履歴を消去する方法はありません。このようなセッションの履歴に関する大部分の質問に対する私たちの決まりきった答えは
location.replace
を使用することです。あなたは、自分のサイトのすべてのページを制御しているので、location.replace
を使用して、あるページから別のページにナビゲートすることができます。これは、履歴の現在のエントリを新しいページに置き換えます。従って、サイトのあるページだけをスタック上に常に持つことになります。以下のコードは、この動作をさせるためにリンクを変更する方法を示しています。 <A HREF="next.html" onclick="javascript:location.replace(this.href); event.returnValue=false; event.cancelBubble=true;">
ここをクリックすると、現在のページを履歴スタックに追加しないで、次のページにナビゲートします。</A>
これは、[戻る]/[進む]
ボタンの問題を処理します。ただし、この機能を必要としている理由によっては、これは完全な答えにはならない場合があります。質問の主旨は、ユーザーがそのセッション内でそのページを再度表示することを許可しないということですか?
もしそうなら、ユーザーが手動で URL を入力してこのページにアクセスすることも防ぐ必要があります。あるいは、あなたの主旨はユーザーが [戻る]/[進む]
ボタンをクリックしたとき行われるように、ページをキャッシュからではなく、毎回サーバーから取り出すようにすることですか ?
最初の疑問の答えは、非常に簡単です。ユーザーが最初にページを要求するときに設定されるセッション変数を使用できます。その変数の値は、ユーザーが同じセッションで再度そのページにアクセスすることを許可するかどうかを決定します。
2 番目の疑問は、もう少し複雑です。Internet Explorer 4.0 は、ユーザーが [戻る]/[進む]
ボタンをクリックしたときでも、キャッシュ ヘッダーを使用していました。Internet Explorer 5 は HTTP
仕様に従ってコンパイルします。HTTP 仕様には、ユーザーが [戻る]/[進む]
ボタンをクリックしたとき、そのページが履歴に保存されるときに表示されていたのとまったく同じように、そのページがユーザーに表示されることが明記されています。どちらの場合でも、ファイルがディスクにキャッシュされるのを防ぐために、HTTP
ヘッダーを追加できます。この HTTP ヘッダーはブラウザがサーバーからそのページを取り出すことを強制します。これらの HTTP
ヘッダーの詳細については、Knowledge Base (KB) の資料 Q234067
"HOWTO: Prevent Caching in Internet Explorer" を参照してください。
上記のソリューションが機能しない場合は、常にページがサーバーから取り出されることを保証するために、セッション cookie
の機能を使用できます。このことを例示するために、いくつかサンプル Active Server Pages (ASP) コードを含めました。 <% @LANGUAGE=JavaScript %>
<% Response.buffer = true %>
<% Response.AddHeader("Set-Cookie","FromValue=Server")%>
<html>
<head>
</head>
<body>
<H3>これは、ドキュメントがキャッシュから取り出されることを確認するテストです。</H3>
<p></p>
<a href="http://www.microsoft.com"> ここをクリックすると別のページに移動し、[戻る] ボタンをクリックするとこのページに戻ります。</a>
<script language=javascript>
function winload()
{
var aCookie = document.cookie.split(";");
var value;
for (var i=0; i < aCookie.length; i++)
{
// 名前と値の組 (crumb) は等号で区切られます。
var aCrumb = aCookie[i].split("=");
if (aCrumb[0] == "FromValue") {
value = unescape(aCrumb[1]);
break;
}
}
alert("Cookie: FromValue = " + value);
if ((value != null) && (value == "Cache"))
{
alert("Reloading from server ... ");
location.reload(true);
}
}
function winunload()
{
var val = "Cache";
document.cookie = "FromValue=" + escape(val) + ";";
}
window.onload = winload;
window.onunload = winunload;
</script>
</body>
</html>
また、Internet Explorer での [戻る]/[進む] ボタンの動作に関する詳細については、KB の資料 Q199805
"PRB: Forward and Back Button Behavior in Internet Explorer" を参照してください。
Web Team の Q&A
これから先も処理が必要なものもあれば、変更してはいけないものもあります。
Q: 訪問者が始めて訪れたときに、"初回用" の特別なページを表示するために、Active
Server Pages を使用する方法を教えてください。(Nelson Emilio)
A: cookie を使用します。cookie と Active Server
Pages!-- A --> で cookie を使用する方法については、アーカイブに登録された質問 Bake
a Batch を調べてください。
初期の Q&A の採録
Q: Internet Explorer を全画面モードで表示する方法を教えてください。(Eric
Schultz)
A: 1997 年 12 月 1 日に投稿された Web
Men Shorts を参照してください。
Tom のお気に入りの Q&A (本当に見たいですか ?)
Q: 検索エンジンを構築する方法を教えてください。 (Deborah
Rhoads)
A: Microsoft
Index Server の完全な情報については、Microsoft Windows NT
Server Web Services を参照してください。
KB を忘れないで !
Q: メールの送信先として mailto URL <A
HREF="mailto:someone@nowhere.com?subject=Hello&body=line%20one%0D%0Anew%20line">Drop
us a line</A>. を使用しているときにメッセージの本文に改行を挿入する方法を教えてください。(Jaka)
A: 改行と復帰は、% を使用してエスケープし、%25 と表します。詳細については、Q251230 を参照してください。
Workshop !
Q: リストボックスまたはドロップダウン リスト内の各項目にツールヒントを提供する方法を教えてください。(Jaslyn)
A: OPTION 要素は onmouseover
イベントを起動しません。従って、マウス カーソルが項目上にあることを判断する方法はありません。
Web Team へのメールは、webtalk@microsoft.com までお願いいたします。
|