• ベストアンサー

HTMLに引数

CGIなどではなくHTMLにも引数が渡せると、最近知りました。 さて、HTML内でどうやってそれを受け取るのでしょう。 Intelのホームページのソースなどをみましたが、ごちゃごちゃしていてよくわかりませんでした。

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

  • ベストアンサー
noname#25358
noname#25358
回答No.9

 「javascript」という文字がダブってました。 <FRAME name=main src=”javascript:location.href=parent.document.location.search.substring(1)”>  これをそのまま使ってみてください。動くはずです。  (ただし<>と”は半角に戻してください)  そしてもちろん、0.htmを呼び出すときには必ず  .../0.htm?main.htm  などのように、ハテナのあとにファイル名を指定してあげないとページが読み込めませんと表示されます。 (なぜならエラー処理が入っていないためです)

haporun
質問者

お礼

うぉぉぉぉ! できましたぁぁぁ。 javascript:が、最初はいるのに、あとはいらないなんて、難しいですねぇ。 長々とホントどうもありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (8)

noname#25358
noname#25358
回答No.8

 ローカルでやってませんか?  一度FTPでプロバイダにアップロードしないと、――たぶんプロトコルの関係だと思うんですが――location.searchは使えません。  (httpdなんかをインストールして擬似的にローカルサーバーをあげてもいいですけど)  それから、もちろん「JavaScript:」は必要です(^_^;  こっちでは動作していますので、色々試せば動くはずです。がんばってください(^^)

haporun
質問者

補足

ローカルではないのですが・・・。 まさか、イントラネット上ではできないなんてことはありませんよねぇ。 もう、どこが間違っているのか、ぜんぜんわかりません。 http://haporun.go.to/0.htm が問題のファイルなので、どこが間違っているか指摘してくださると、非常にありがたいです。 お願いしますぅぅぅ(泣)。

すると、全ての回答が全文表示されます。
noname#25358
noname#25358
回答No.7

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

haporun
質問者

補足

<frame src='location.href=parent.document.location.search.substring(1)' name=main> とやっていますが、ぜんぜんできませーん(泣)。 "javascript:" を加えてみたけど、何もない画面になってしまいました。 ダブルクォートとシングルクォートは関係なさそうだし。 >それとも、[更新]~ フレームの親がHTMLだと、更新したときにトップページに戻ったりはしないのですが、CGIだと戻ってしまうでしょう。 だから、CGIではなくHTMLに戻したかったのですが。 クッキーって難しいですか?

すると、全ての回答が全文表示されます。
noname#25358
noname#25358
回答No.6

 はい。そうです。これは引数がそのまま表示されます。  引数のファイル名とはなんでしょう?  …………。  …………。(←気づいた)  ああ! 分かった(^_^;  じゃあ、これ↓試してみてください。  location.href=parent.document.location.search.substring(1)  だんだん長くなる……(笑)

haporun
質問者

補足

その方法も考えてはみたのですが、それをどこに書きましょう。 目的のフレームに、引数で送られてきたファイル名のファイルを表示するには・・・。 ・・・CGIなら簡単なんですけど(実際にhttp://haporun.go.to/でそうやってます)。 でもCGIを親フレームすると、表示更新したときにトップページに戻っちゃうから、それを何とかしつつ、右フレームに表示するファイルを引数で指定できないかなと思いまして。

すると、全ての回答が全文表示されます。
noname#25358
noname#25358
回答No.5

 判明しました(^_^;  ブラウザから右のフレーム(main)のソースを見てください。(「右クリック」→「ソースの表示(V)」)  これ、src="javascript:....." で記述したソースが展開されてますよね。  でですね。  「実行そのもの」が、子フレーム上で行われてるんです(^_^;  どういうことかというと、値は親フレームに渡しますよね? ですから親フレームが値を受け取っているにも関わらず、実際にスクリプトが実行されているのは子フレームである「main」なんです。  ですから、それを意識してソースを組む必要があるわけです。 <FRAME name=main src="javascript:parent.document.location.search.substring(1)">  よって、↑こうやれば動きます(確認済み)。

haporun
質問者

補足

??%!&$??。 送られてきた引数の名前のファイルの内容ではなく、その引数がそのまま表示されてしまうのですが・・・。 もしかしたら、質問のしかたが悪かったせいで、勘違いなされた?

すると、全ての回答が全文表示されます。
noname#86982
noname#86982
回答No.4

document.writeって、実行されると、HTMLドキュメントが最初から書き直されちゃうんじゃなかったでしたっけ? だから、 document.write"<HTML>"; document.write"<HEAD>"; ...(中略) document.write"</HEAD>"; document.write"<BODY>"; ...(中略) document.write"<BODY>"; document.write"</HTML>"; まで書かないとならないのではないでしょうか? そういう意味だと思うのですが… 間違ってたらすみません(^^;

haporun
質問者

お礼

>最初から書き直~ そういうわけではないようです。 frameの中で関数は使えないとしても、変数は使えないでしょうかねぇ。

すると、全ての回答が全文表示されます。
noname#25358
noname#25358
回答No.3

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

haporun
質問者

補足

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

すると、全ての回答が全文表示されます。
noname#25358
noname#25358
回答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を書きますので、役に立つようだったら参考にしてみてください。

参考URL:
http://wakusei.cplaza.ne.jp/twn/
haporun
質問者

お礼

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

すると、全ての回答が全文表示されます。
noname#25358
noname#25358
回答No.1

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

参考URL:
http://www.edit.ne.jp/~deagle/novels/peng23.htm?back=http://www.pp.iij4u.or.jp/~deagle/freeze.htm
haporun
質問者

お礼

ありがとうございます。 さて、フレームに引数で渡された名前のファイルを表示したいと思ったのですが、次のようにしてもできません。 <frameset cols="240,*" border=0> <frame src="list.html" name=list> <frame src="javascript:location.search.substring(1)" name=main> </frameset> どうしたらよいでしょう。 お願いします。

すると、全ての回答が全文表示されます。

関連するQ&A