- ベストアンサー
baseタグと各種ブラウザについて
- baseタグと各種ブラウザについての問題について調査した結果、ブラウザのバグではなく、baseタグを使用することによる画像表示の問題が発生していることがわかりました。
- バグではない場合でも、baseタグの使用には注意が必要です。相対パスで指定した画像が表示されない可能性があるため、baseタグの使用は避けるべきです。
- ブラウザのバージョンやOSによってもbaseタグの動作に違いが出ることがあります。今回の問題はChromeやSafariで発生しており、IEやFirefoxでは問題ありませんでした。
- みんなの回答 (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一カ所の変更ですべてのタグに修正がかかる、ということはできませんから。
その他の回答 (4)
- notnot
- ベストアンサー率47% (4900/10358)
ブラウザのバグの気がします。 ・DOCTYPEを変えてみた ・baseタグをheadの先頭に置いてみた ・サイトルートじゃ無くて一つ下の階層に全部ずらしてみた ・postでなくgetにしてみた ・念のためにPHPでない言語を使ってみた どうやってもだめですね。 サーバーから送られてくるHTMLは同一なのに、直前に送信したデータに依存して動作が変わるというのはどう考えても変です。
お礼
いろいろお試しいただいてありがとうございます。 やはりブラウザのバグっぽいですね。改めて納得です。 これ以上の究明は難しいとおもいますのでこれで終了とします。 みなさんありがとうございました。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
いまだに、事情がよくつかめていないのですが・・ とりあえず、そのPHPのactionのあて先を http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi に変更して送信してみたり あるいは、このCGIのフォームに値を記入して送信してみてください。 何かつかめるかも・・
お礼
そうですか、ありがとうございました。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
PHPが受け取った標準入力と環境変数をすべて羅列するコードを書き加えてください。 たとえば、そのHTMLの送信先を前出のCGIに変更したときみたいに・・ http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi/tekitoo/true-web.org/test/test_base.php?abc とか・・・ >"baseタグがブラウザ側の処理に依存する仕様"というのは気になります。 これは、仕様書確認 12.4 パス情報: BASE要素 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/links.html#edef-BASE )
お礼
度々お世話になります。 以下に作成しました。 phpinfo()を若干整形して出力してます。 http://true-web.org/test/test_base3.php ソース http://true-web.org/test/test_base3.txt Apache の環境変数は上のほうの"Apache Environment"でみれます。 標準入力等は最下段の"PHP Variables"で見れます。 よろしくお願いします。 仕様については、ブラウザ側の処理に依存する仕様といいますか、 ブラウザがRFCの仕様にちゃんと従ってるかどうかということでしょうか。 ありがとうございました。
- ORUKA1951
- ベストアンサー率45% (5062/11036)
送信先のプログラムでの処理がどうなっているのかがわからないのでなんとも・・ baseは、あくまでブラウザ側の処理に依存する仕様なので、ブラウザがその受け取った値をどのように処理しているかがわからないと何とも言えない気がします。 Enviroment Variable and FORM,COOKIE ( http://hpcgi1.nifty.com/Iruka/ENV_FORM.cgi ) のような簡単なスクリプトでも作成して、どのような形でデータが送られてきているか確認してからの対応になると思います。
お礼
ありがとうございます。 意図とあってるかわからないですが、 http://true-web.org/test/test_base.php に print_r($_POST); を追記しました。 ※ソース http://true-web.org/test/test_base.txt 送信元と送信先は同じPHPで作成されたページで、もともと送信された(されてきた)データに対してはなにもしてません。またbaseタグ部分を動的に出力しているわけではありません。とはいえ、"baseタグがブラウザ側の処理に依存する仕様"というのは気になります。 その辺を解説してるページがあるとありがたいです!
お礼
ありがとうございます。 Lunascape試してみました。 レンダリングエンジンをWebkitにした場合でも再現しませんでした・・・ いずれにせよ"baseタグ自体が非推奨と言われて"というのはしりませんでした。 今後は無用なトラブルを避ける意味でも使用を控えようと思いました。 (動的なサイト作るとき便利なんですけどねぇw)
補足
すみません、肝心なことを書き忘れてました。 Baseタグに適当なファイル名をくっつけた場合。 http://true-web.org/test/test_base2.php これ、問題なかったです。 既存の際とはこの路線で回避したいと思います。 ありがとうございました。