人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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



●質問者: masashi0316
●カテゴリ:インターネット ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● nattow
●150ポイント ベストアンサー

chrome で一度送信すると、base URI が "http://true-web.org/test/" になってしまうようですね。(もう一度送信すると http://true-web.org/test/test/test_base.php に遷移して Not Found になるので、そこは間違いないと思います。)
また、href 属性の様でない文字列を送信しても何の問題もありませんね。
そして、「href="true-web.org"」や「href="aaa"」など、属性値に当たる部分を URI ではない文字列に変えて送信しても何の問題もありませんでした。
さらに、「href="http://true-web.org"」や「href="http://true-web.orgx"」でも何の問題もありませんでした。

以上より推測の域を出ませんが、「href 属性の様な文字列」かつ「自身のドメインを含む文字列(←ちょっと不正確な表現ですが)」を送信した場合に base 要素が無効になり、"http://true-web.org/test/test_base.php" が base になっていると考えられます。

結論としては、個人的には chrome の不具合だと思いますが・・・。

例えばですが、 base より先に「href 属性の様な文字列」が含まれる文字列を処理する場合、(それがフォームパラメータであろうがお構いなしに)base 要素の処理をキャンセルするような実装になっている、とか?


masashi0316さんのコメント
そうですね。 Chromeですと要素検証って機能があるわけですが、 1番を送信するとbaseタグのhref属性は空になってしまいます。 で、current(現在いるディレクトリ)がbaseになり、 formのactionはtest/test_base.phpなので、 2回目はhttp://true-web.org/test/test/test_base.phpに送信されることになります。 chrome の不具合であればいいのですが、Safariでも同じなんですよね。 判断が難しいです。 いろいろご意見ありがとうございました。

nattowさんのコメント
chrome と Safari で同じ症状ということは、レンダリングエンジン(WebKit)の問題なのかも、と思って LUNASCAPE を WebKit で動かしてみたところ問題なく動きました・・・。

masashi0316さんのコメント
私もLUNASCAPEで試してみました。問題ないっすね・・・ まいりました。

2 ● kodairabase
●50ポイント

>※ソース http://true-web.org/test/test_base.txt
http://true-web.org/test/test_base.php の内容と違いますし、何らかのJavaScriptを読み込んでいるようですので、そもそもPHPプログラムに問題があるのではないでしょうか?
ご確認ください。

自前のサーバ(Apache 2.4)で http://true-web.org/test/test_base.txt を実行したところ、chromeやsafariでも問題なく動きました。


masashi0316さんのコメント
ご確認ありがとうございました。 送信されてきたデータについてPHPでなんら処理してませんし、 Javascriptも読み込んでません。 参考にあげたURLのサーバがPHPやCGIでないと、POSTデータを受け取らない仕様だったのでPHPで書いただけなのですが、別のサーバでHTMLのみで同じことを試しましたが結果は同じでした。 しかしながらいろいろご尽力いただきましてありがとうございました。 差し支えなければお試しいただいたページのURLを教えていただけたら幸いです。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ