CGI の中でprintを使ってHTMLファイルを出力することができますが、ブラウザで任意の場所を先頭に(スクロールさせて)表示させることができるでしょうか?
hogehoge.cgi
------------------------
・
・
<a name="label01">
print "AAAAA<BR>";
<a name="label02">
print "BBBBB<BR>";
<a name="label03">
print "CCCCC<BR>";
・
・
------------------------
上のような場合で、
ブラウザで"BBBBB"を先頭に
(label02 の位置にスクロールさせて)
表示させたいのです。
hogehoge.cgi#label02 で呼び出せばいいというのは
駄目です。
cgi の中で、処理によって表示の位置を
label01, label02, label03 と
ダイナミックに切り替えたいからです。
HTMLヘッダで Refresh を指定して、
再読み込みさせることもできますが、
携帯電話のブラウザではうまくいかないので、
別の方法をご教授ください。
No.6ベストアンサー
- 回答日時:
> label02 に飛ばすか label01 に飛ばすかは
> CGIの処理結果で決まり、
> hogehoge.cgi コール時には不明なので、
> hogehoge.cgi#label02 とは呼び出せないのです。
あなたのやりたいことがようやく理解できました。
それならば、ラベル名は固定でアンカーの出力位置を動かせばいいのではないでしょうか?
リクエストは
hogehoge.cgi#hoge
として、
'<a name="hoge">'
を表示させたい行の直前に出力するようにすればいいでしょう。
No.5
- 回答日時:
じゃあ、ラベル名を#gotoとかにして、飛ばしたい部分に
<a name="goto"></a>
だけ出力するっていうのは?
CGIの処理(サーバ側)でスクロールの初期位置を決定することは、おそらくできません。その動作は、HTMLの処理(クライアント側)によるものなので、URIで#labelを指定してやらないと希望の動作は得られないと思います。
なので、やるとしたら、Locationで飛ばすか、Refreshで飛ばすか、Javascriptで飛ばすか、#gotoで飛ばす行き先の位置を変更するかの、いづれかになると思います。
これで納得いかないなら、よりスマートでない記述をするしかなくなると思います。(少なくとも自分はこれ以外の方法を思いつきません)
クライアント側の処理でしょうが、
その情報(ラベルに飛べ)は
クエリ(URL)からしか指定できないのか?
という問いでした。
残念ながらできないようですね。
ありがとうございました。
No.4
- 回答日時:
CGIを二重にしてLocationでとばすとか。
hugahuga.cgiでスクロールさせる位置を判断して(ここでは仮に#label02にスクロールするものとして)
----
if($l == 2){$label = "#label02";}
print "Location: hogehoge.cgi$label\n\n";
----
って感じに、目的のHTMLを表示するCGIに飛ばす。
…とかいう風にしてみてはどうでしょうか?
ありがとうございます。
この方法は検討しました。
…が、CGIはパラメータを付加してコールするので
処理が煩雑になるのと
あまりキレイな流れとは言えないので
他にシンプルな方法が
(わたくしが知らないだけで一般的な方法が)
あるのではないかと思い、
質問させていただきました。
No.3
- 回答日時:
読み込むファイルがhtmlだろうがcgiだろうが、ページ内アンカーは指定できます。
http://somewhere.com/hogehoge.cgi#label02
と書けば、label02のアンカーにちゃんと飛びます。
POSTでも、
<form action="hogehoge.cgi#label02" method="POST">
と書けばページ内アンカーが使えます。
携帯のブラウザでもちゃんと機能します(ページ内アンカーに対応していないブラウザがあるかもしれませんが)
この方法だとなぜだめなのか、理由をお願いします。
もしくは、ご自分のなさりたいことを詳しく書いていただけませんか。
(どういう操作をしたときに、どんな挙動をさせたいのか、etc.)
この回答への補足
おっしゃることは知っています。
label02 に飛ばすか label01 に飛ばすかは
CGIの処理結果で決まり、
hogehoge.cgi コール時には不明なので、
hogehoge.cgi#label02 とは呼び出せないのです。
初めから質問に書いているのですが…
こちらの前提条件を否定されても困ります。
わたくしの条件で、解をご教授いただける方のみ
ご投稿ください。
この条件では「不可能」というのも解です。
不可能かどうかわからないので質問しています。
No.2
- 回答日時:
> cgi の中で、処理によって表示の位置を
> label01, label02, label03 と
> ダイナミックに切り替えたいからです。
というのがイマイチよく理解できないのですが、
"AAAAA"
"BBBBB"
"CCCCC"
という表示が
"AAAAA"
"CCCCC"
"BBBBB"
みたいに移動することがある、ということなら
<a name="label01">
print "AAAAA<BR>";
<a name="label03">
print "CCCCC<BR>";
<a name="label02">
print "BBBBB<BR>";
というようにアンカーごと出力位置を動かせばラベル名を含んだ
URLでスクロールができるのではないでしょうか。
この回答への補足
print '<a name="label01">';
print "AAAAA<BR>";
print '<a name="label02">';
print "BBBBB<BR>";
print '<a name="label03">';
print "CCCCC<BR>";
の間違いでした。ヒアドキュメントにした方が
わかりやすかったか?
AAAA, BBBB, CCCCは1行とは限りません。
これらの表示順を変えたいということではなく、
先頭からではなく、
途中から(スクロールさせて)表示できるか?という
質問です。
言い換えれば、
CGIからの出力でアンカーを指定できるの?
という話です。
print文の内容を hogehoge.htmlとしたら、
hogehoge.html#label02 として
ブラウザで表示されるのと同じにしたいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- JavaScript Javascriptが機能せず原因が分からないので教えて頂きたいです 3 2023/06/04 14:50
- PHP アップロードファイルの数に応じてCSSを動的に変更したいのですが、方法がわかりません 3 2023/07/23 21:59
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- PHP アップロード画像数でCSSを分けることに成功したのですが、画像の横に文字を並べることが出来ません。 3 2023/07/28 17:16
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
log2の「正確な」計算方法
-
Perlでファイルの末尾から指定...
-
DOSコマンドで、標準出力を出力...
-
MAC OSXのTerminalにperlの出力...
-
文字列をカウントする方法
-
ファイル全てを .xlsm に変更し...
-
一定時間が経過したフォルダの削除
-
csvファイルの横方向への改行に...
-
while(<ハンドラ>) {} で行数を...
-
画像アップロード機能を追加し...
-
batファイルでrenameができませ...
-
while文がうまく動かない
-
VBAでCSVファイルの特定行を書...
-
MATLABのm-fileについて
-
配列のサイズを動的に拡張
-
ディレクトリのファイル作成を...
-
ANSI Cでファイル名、ディレク...
-
VB6.0でDB接続する際に切断時の...
-
Pythonの再帰関数の動作の流れ...
-
AutoCADのスクリプト
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
awkスクリプトでダブルクォーテ...
-
DOSコマンドで、標準出力を出力...
-
エクセルVBAで素数だけを出力す...
-
教えて!perlから.exeファイル...
-
sprintfについて
-
Perlでファイルの末尾から指定...
-
CGIから外部コマンド実行時の標...
-
重複するデータを抽出できる秀...
-
ファイル出力の改行コードをLFに
-
timeコマンドの結果をテキスト...
-
sprintfで10進数を桁数指定で16...
-
log2の「正確な」計算方法
-
機器のI/OをArduinoでSDに記録...
-
Perl<->Oracle間での文字化けに...
-
Perl中で teeを使っても戻り値...
-
テキストファイルから日本語部...
-
バッチファイルで、記号を含む...
-
htmlから、ファイル、もしくはC...
-
perlでの出力先設定
-
標準エラーと標準出力をファイ...
おすすめ情報