dポイントプレゼントキャンペーン実施中!

baseタグと各種ブラウザについての質問です。

あるブラウザで各種HTMLタグにおけるhref属性の様な文字列を送信した場合で、かつ、送信先ページに値部分と同じURLを持つbaseタグが記述されている場合、baseタグが認識されないといった問題に直面しています。
具体的には次のページのような感じです。
http://true-web.org/test/test_base.php
Chrome、Safariなどで1番を送信した場合、baseタグが認識されず、相対パスで指定した画像が表示されなくなります。
(IEとFirefoxは問題なし)
※ソース http://true-web.org/test/test_base.txt



それで、質問なのですが、この事象はブラウザ側のバグなのでしょうか?
もしバグでないとしたらBaseタグは使わないほうがいいのでしょうか?
考え方を教えてください。
よろしくお願いします。

ブラウザのバージョン
IE8.0
Firefox5.0.1
Safari5.1
Chrome16.0.912.63 m

OS
Windows XP home sp3

A 回答 (5件)

何度か送信させていただきました。


不思議な現象ですね。

<base href="http://true-web.org/index.html" />
適当なファイル名まで付けてみるとどうでしょうか。(文法上はスラッシュ止まりでも問題ありません。)


>それで、質問なのですが、この事象はブラウザ側のバグなのでしょうか?
現象だけで判断していますが、おそらくWebkitのバグではないかと思います。
もしそうなら、Phonegap、iCabや、
Sleipnir、LunascapeなどのレンダリングエンジンをWebkitにした場合、IEプラグインのChrome Frameなどでも、同じ現象になるかもしれません。

https://bugs.webkit.org/


>もしバグでないとしたらBaseタグは使わないほうがいいのでしょうか?
バグ、バグでないに関わらず、baseタグ自体が非推奨と言われています。
<img src="test.jpg">としたときに、このタグ(タグ属性)だけでsrcがどこなのか、判断しづらいから、などと言われてます。
私はその意見には賛成ですが、使い方次第で良くも悪くもなると思いますけどね。

baseタグのように、href一カ所の変更ですべてのタグに修正がかかる、ということはできませんから。

この回答への補足

すみません、肝心なことを書き忘れてました。
Baseタグに適当なファイル名をくっつけた場合。
http://true-web.org/test/test_base2.php

これ、問題なかったです。
既存の際とはこの路線で回避したいと思います。

ありがとうございました。

補足日時:2011/12/15 12:45
    • good
    • 0
この回答へのお礼

ありがとうございます。

Lunascape試してみました。
レンダリングエンジンをWebkitにした場合でも再現しませんでした・・・

いずれにせよ"baseタグ自体が非推奨と言われて"というのはしりませんでした。
今後は無用なトラブルを避ける意味でも使用を控えようと思いました。
(動的なサイト作るとき便利なんですけどねぇw)

お礼日時:2011/12/15 11:54

ブラウザのバグの気がします。



・DOCTYPEを変えてみた
・baseタグをheadの先頭に置いてみた
・サイトルートじゃ無くて一つ下の階層に全部ずらしてみた
・postでなくgetにしてみた
・念のためにPHPでない言語を使ってみた

どうやってもだめですね。

サーバーから送られてくるHTMLは同一なのに、直前に送信したデータに依存して動作が変わるというのはどう考えても変です。
    • good
    • 0
この回答へのお礼

いろいろお試しいただいてありがとうございます。
やはりブラウザのバグっぽいですね。改めて納得です。

これ以上の究明は難しいとおもいますのでこれで終了とします。
みなさんありがとうございました。

お礼日時:2011/12/16 00:15

いまだに、事情がよくつかめていないのですが・・


とりあえず、そのPHPのactionのあて先を
http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi
に変更して送信してみたり
あるいは、このCGIのフォームに値を記入して送信してみてください。
何かつかめるかも・・
    • good
    • 0
この回答へのお礼

そうですか、ありがとうございました。

お礼日時:2011/12/16 00:12

PHPが受け取った標準入力と環境変数をすべて羅列するコードを書き加えてください。



 たとえば、そのHTMLの送信先を前出のCGIに変更したときみたいに・・
http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/tekit …
とか・・・


>"baseタグがブラウザ側の処理に依存する仕様"というのは気になります。
 これは、仕様書確認
12.4 パス情報: BASE要素 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )
    • good
    • 0
この回答へのお礼

度々お世話になります。
以下に作成しました。
phpinfo()を若干整形して出力してます。
http://true-web.org/test/test_base3.php
ソース http://true-web.org/test/test_base3.txt

Apache の環境変数は上のほうの"Apache Environment"でみれます。
標準入力等は最下段の"PHP Variables"で見れます。
よろしくお願いします。

仕様については、ブラウザ側の処理に依存する仕様といいますか、
ブラウザがRFCの仕様にちゃんと従ってるかどうかということでしょうか。
ありがとうございました。

お礼日時:2011/12/15 14:56

送信先のプログラムでの処理がどうなっているのかがわからないのでなんとも・・


baseは、あくまでブラウザ側の処理に依存する仕様なので、ブラウザがその受け取った値をどのように処理しているかがわからないと何とも言えない気がします。
Enviroment Variable and FORM,COOKIE ( http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi )
のような簡単なスクリプトでも作成して、どのような形でデータが送られてきているか確認してからの対応になると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。

意図とあってるかわからないですが、
http://true-web.org/test/test_base.php

print_r($_POST);
を追記しました。
※ソース http://true-web.org/test/test_base.txt

送信元と送信先は同じPHPで作成されたページで、もともと送信された(されてきた)データに対してはなにもしてません。またbaseタグ部分を動的に出力しているわけではありません。とはいえ、"baseタグがブラウザ側の処理に依存する仕様"というのは気になります。
その辺を解説してるページがあるとありがたいです!

お礼日時:2011/12/15 11:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!