アプリ版:「スタンプのみでお礼する」機能のリリースについて

objectタグ内にHTML文章を埋め込んだ場合、埋め込んだHTML内のリンクをクリックするとリンク先のページがobjectタグ内に開かれます(当然ですが^^;)。
この場合のリンク先をobjectタグ内ではなく、そのobjectタグが記述されているウィンドウ(親ウィンドウ)に開くことは可能でしょうか?
リンクのtarget属性を"_top","_parent"に指定してみましたが期待通りの結果にはなりませんでした。

もしご存じの方がいましたら教えてください。
よろしくお願いします。

追記:インラインフレームを使う予定は今のところ考えておりません。

A 回答 (1件)

どうやらIEのバグの様です。


mozilla系ブラウザでは正常に動作しますし、W3C勧告を見る限りでもIE側の問題に思えます。

色々と試してみましたが、HTMLではどうにも改善できませんでした。


ただ、Javascriptを利用すれば回避が可能でしたので、Javascriptを利用した回避方法を下に書きます。

1)トップウインドウに、次のスクリプトを追加する。
<script type="text/javascript">
<!--
window.name = "top_frame";
// -->
</script>
(ウィンドウに名前を付けます)

2)リンクが存在する元ページに、次のスクリプトを追加する。
<script type="text/javascript">
<!--
function framemove() {
window.open("framemove.html","sub");
}
// -->
</script>
(スクリプトからOPENしないと、CLOSEする時に確認ダイアログが開いてしまいます。)

3)リンクタグを次の様に変更する。
<a onclick="framemove()" href="LINK.html" target="_top">リンク</a>
(LINK.htmlは、リンク先のURIを書いてください。target 及びhrefは、javascript非対応またはjavascriptを無効にしているブラウザへの対応の為です。javascript 対応ブラウザには冗長する結果となります。)

4)framemove.html を、次の内容にする。
<script type="text/javascript">
<!--
window.open("LINK.html","top_frame");
window.close();
// -->
</script>
(最初に名前を付けたウィンドウに、本来表示したいURIを表示させます。その後、このウィンドウを閉じます。)

これで動作すると思います。ただ、この方法だとLINK.html 以外のページに対して同様にリンクを貼りたい場合、その数だけframemove.htmlと同じ物を作らなければならないという問題が有りますが…(T-T

この回答への補足

> window.open(location.search + ".htm","top_frame")
「location.search」では"?"も含まれてしまうので「location.search.substring(1)」ですね。^^;

補足日時:2005/03/05 14:57
    • good
    • 0
この回答へのお礼

> どうやらIEのバグの様です。
動作確認をしたブラウザを記述し忘れたのにわざわざ調べていただいてありがとうございます。

2)に記載されている
> window.open("framemove.html","sub");
の「sub」を「top_frame」に設定すれば親ウィンドウで開けそうな気がしたのですが、駄目みたいですね...(実際動かしてみました)
不思議です。

> これで動作すると思います。ただ、この方法だと
> LINK.html 以外のページに対して同様にリンクを貼り
> たい場合、その数だけframemove.htmlと同じ物を作ら
> なければならないという問題が有りますが…(T-T
この問題に対してはURIにsearchかhashでリンク先のファイル名を埋め込み、4)で
window.open(location.search + ".htm","top_frame");
とすることで解決させようと思います。
問題はIEでJavaScriptを切っている場合ですが...注意書きなどを書いて対処するしかなさそうですね。

詳しく調べていただき、本当にありがとうございました。

お礼日時:2005/03/05 12:38

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