-PR-
解決済み

HTMLに引数

  • 暇なときにでも
  • 質問No.18407
  • 閲覧数1607
  • ありがとう数7
  • 気になる数0
  • 回答数9
  • コメント数0

お礼率 77% (530/685)

CGIなどではなくHTMLにも引数が渡せると、最近知りました。
さて、HTML内でどうやってそれを受け取るのでしょう。
Intelのホームページのソースなどをみましたが、ごちゃごちゃしていてよくわかりませんでした。
通報する
  • 回答数9
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.9

 「javascript」という文字がダブってました。

<FRAME name=main src=”javascript:location.href=parent.document.location.search.substring(1)”>

 これをそのまま使ってみてください。動くはずです。
 (ただし<>と”は半角に戻してください)

 そしてもちろん、0.htmを呼び出すときには必ず

 .../0.htm?main.htm

 などのように、ハテナのあとにファイル名を指定してあげないとページが読み込めませんと表示されます。
(なぜならエラー処理が入っていないためです)
お礼コメント
haporun

お礼率 77% (530/685)

うぉぉぉぉ!
できましたぁぁぁ。
javascript:が、最初はいるのに、あとはいらないなんて、難しいですねぇ。
長々とホントどうもありがとうございました。
投稿日時 - 2000-12-15 14:28:40

その他の回答 (全8件)

  • 回答No.3

 補足見ました。

 document.writeは<HTML>が始まっている必要があるのかもしれません。documentオブジェクトが厳密にどの段階で生成されるのか分からないので。
 なんで、いちおーファイルに分けて試してみてください。
補足コメント
haporun

お礼率 77% (530/685)

・・・?
<html>ではなくて<body>のこと?
http://haporun.go.to/0.htm
ってな具合になっているのですが。
やっぱり、フレームの中じゃ、JAVA使えないんですかねぇ。
投稿日時 - 2000-12-13 13:22:08


  • 回答No.2

 補足見ました。

 えとですね。それ、substringを「実行しているだけ」です(笑) それに引数も1つ足りません。
 substringの引数は2つで、それに表示するにはdocument.writeを使わなければいけません。
 ですので、HTMLファイルに渡された文字列を表示するスクリプトは、

 document.write(location.search.substring(1,location.search.length-1));

 となります。
 それからですね。このlocation.searchですけど、実はこれ、ローカルだと正しく動かないんですよ。原因は不明なんですが、必ずヌル文字列が返ってしまいます。ですからローカルでやるときはlocation.hashを使う必要があります。このとき引数は、

 index.html#abc

 という具合に、ハテナではなくハッシュで渡します。

 ところで、srcオプションの項目にJavaScript記述するのって、アリでしたっけ。動くならいいですケド。

 ご存知かもしれませんが、HTML関連の勉強をするのに有名なところのURLを書きますので、役に立つようだったら参考にしてみてください。
お礼コメント
haporun

お礼率 77% (530/685)

document.writeも試したのですが、これをどうframeに適用していいか・・・。
substringは第2引数省略可能で、省略すると最後まで、だったような。
<a href="javascript:history.go(-1)" target=main>
と同じように、frameのsrcでも使えないかな、と思ったのですが。
ダメですかね。
投稿日時 - 2000-12-13 10:28:48
  • 回答No.1

 JavaScriptです。
 locationオブジェクトの変数searchにそれが入ります。
 俺が実際にやってるのを参考URLに記述しますので、ソース内の関数GoBack()を見てください。
 これは、引数に何も渡されていなければデフォルトの戻り先に戻り、渡されていればそっちに戻るというものです。
お礼コメント
haporun

お礼率 77% (530/685)

ありがとうございます。
さて、フレームに引数で渡された名前のファイルを表示したいと思ったのですが、次のようにしてもできません。

<frameset cols="240,*" border=0>
<frame src="list.html" name=list>
<frame src="javascript:location.search.substring(1)" name=main>
</frameset>

どうしたらよいでしょう。
お願いします。
投稿日時 - 2000-12-13 09:33:08
  • 回答No.4

document.writeって、実行されると、HTMLドキュメントが最初から書き直されちゃうんじゃなかったでしたっけ?
だから、

document.write"<HTML>";
document.write"<HEAD>";
...(中略)
document.write"</HEAD>";
document.write"<BODY>";
...(中略)
document.write"<BODY>";
document.write"</HTML>";

まで書かないとならないのではないでしょうか?
そういう意味だと思うのですが…
間違ってたらすみません(^^;
お礼コメント
haporun

お礼率 77% (530/685)

>最初から書き直~
そういうわけではないようです。
frameの中で関数は使えないとしても、変数は使えないでしょうかねぇ。
投稿日時 - 2000-12-13 14:33:43
  • 回答No.5

 判明しました(^_^;

 ブラウザから右のフレーム(main)のソースを見てください。(「右クリック」→「ソースの表示(V)」)
 これ、src="javascript:....." で記述したソースが展開されてますよね。

 でですね。
 「実行そのもの」が、子フレーム上で行われてるんです(^_^;
 どういうことかというと、値は親フレームに渡しますよね? ですから親フレームが値を受け取っているにも関わらず、実際にスクリプトが実行されているのは子フレームである「main」なんです。
 ですから、それを意識してソースを組む必要があるわけです。

<FRAME name=main src="javascript:parent.document.location.search.substring(1)">

 よって、↑こうやれば動きます(確認済み)。
補足コメント
haporun

お礼率 77% (530/685)

??%!&$??。
送られてきた引数の名前のファイルの内容ではなく、その引数がそのまま表示されてしまうのですが・・・。
もしかしたら、質問のしかたが悪かったせいで、勘違いなされた?
投稿日時 - 2000-12-13 14:45:13
  • 回答No.7

 実際にためしましたが、

<FRAME name=main src='location.href=parent....'>

 でうまく行きましたよ。

 それとも、[更新]ボタンを押したときにトップに戻るあれを何とかしたい、という質問だったのでしょうか?(^_^;
 であれば、期限指定なしのクッキーを使って、「最後にどこにいたか」を記憶させておくのが一番楽じゃないでしょうか。
 ロジックがちょっと複雑になりますけど。
 JavaScriptからは、document.cookie でアクセスできます。
補足コメント
haporun

お礼率 77% (530/685)

<frame src='location.href=parent.document.location.search.substring(1)' name=main>
とやっていますが、ぜんぜんできませーん(泣)。
"javascript:" を加えてみたけど、何もない画面になってしまいました。
ダブルクォートとシングルクォートは関係なさそうだし。

>それとも、[更新]~
フレームの親がHTMLだと、更新したときにトップページに戻ったりはしないのですが、CGIだと戻ってしまうでしょう。
だから、CGIではなくHTMLに戻したかったのですが。

クッキーって難しいですか?
投稿日時 - 2000-12-14 12:34:27
  • 回答No.6

 はい。そうです。これは引数がそのまま表示されます。
 引数のファイル名とはなんでしょう?

 …………。
 …………。(←気づいた)
 ああ! 分かった(^_^;
 じゃあ、これ↓試してみてください。

 location.href=parent.document.location.search.substring(1)

 だんだん長くなる……(笑)
補足コメント
haporun

お礼率 77% (530/685)

その方法も考えてはみたのですが、それをどこに書きましょう。
目的のフレームに、引数で送られてきたファイル名のファイルを表示するには・・・。

・・・CGIなら簡単なんですけど(実際にhttp://haporun.go.to/でそうやってます)。
でもCGIを親フレームすると、表示更新したときにトップページに戻っちゃうから、それを何とかしつつ、右フレームに表示するファイルを引数で指定できないかなと思いまして。
投稿日時 - 2000-12-13 15:25:24
  • 回答No.8

 ローカルでやってませんか?
 一度FTPでプロバイダにアップロードしないと、――たぶんプロトコルの関係だと思うんですが――location.searchは使えません。
 (httpdなんかをインストールして擬似的にローカルサーバーをあげてもいいですけど)

 それから、もちろん「JavaScript:」は必要です(^_^;

 こっちでは動作していますので、色々試せば動くはずです。がんばってください(^^)
補足コメント
haporun

お礼率 77% (530/685)

ローカルではないのですが・・・。
まさか、イントラネット上ではできないなんてことはありませんよねぇ。
もう、どこが間違っているのか、ぜんぜんわかりません。

http://haporun.go.to/0.htm

が問題のファイルなので、どこが間違っているか指摘してくださると、非常にありがたいです。
お願いしますぅぅぅ(泣)。
投稿日時 - 2000-12-15 13:02:19
このQ&Aのテーマ
このQ&Aで解決しましたか?
関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

ページ先頭へ