- ベストアンサー
<iframe>内にHTMLをランダム表示するには?(NN対応)
タイトル通りの質問ですが、 1)http://questionbox.msn.co.jp/qa985817.html(ANo.1) と 2)http://questionbox.msn.co.jp/qa566994.html(ANo.3) を試してみたのですが、上手くいかないのでご教示ください。 1)ではそもそも、NNでは動作しないと書かれてあり、確かに動作しませんでした。 2)は、win IE/Opera/FireFoxでは動作するのですが、win/NN7.0で確認したところ、動作しません(画面に何も表示されませんでした)。 トップページに使用したいので、できればNNでも動作するようにしたいのですが、NNも対応可の書き方はあるでしょうか? 上記2)で試してみた書き方。========================================= <head> <script type="text/javascript"> <!-- rlURL= new Array(); rlURL[0]="top_1_jp.html" rlURL[1]="top_2_jp.html" rlURL[2]="top_3_jp.html" function RndmOpen(){ n=rlURL.length; x=Math.floor(Math.random()*n); window.open(rlURL[x],"iFr"); } //--> </script> </head> <body TopMargin=0 LeftMargin=0 RightMargin=0 BottomMargin=0 STYLE="overflow:auto;" onLoad="RndmOpen()"> <iframe src="#" border="0" width="100%" height="100%" name="iFr"></iframe> </body> ========================================= よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
>の部分だけを、 >書きかえればいいのでしょうか その場合は >function RndmOpen(){ これと4行下の >} を削って。(他はそのまま) そうするとHTMLが読まれて来る時にbodyに到達するまえにそこが実行されて rlURL と x が設定される で、件の書き換え場所で 実際の書き込みが行われる。
その他の回答 (4)
- MAN_MA_RUI
- ベストアンサー率41% (426/1024)
> win IE/Opera/FireFox FireFoxって言っちゃイヤです(笑) http://www.mozilla-japan.org/support/firefox/faq#spell-abbreviate Netscape7が対応していない原因はただ単にバージョンが古いからです。リリースは…確か2003年頃だっけ? Netscape7系列はセキュリティ面から言うと使うべきではないです。 もう何年も放置されていますからセキュリティ上の欠陥がまず多いです。 それにバグ・未対応のJavaScript・未対応のCSSなどがあって、Web開発なんかの観点からすればN7サポートは足枷。 N7に対応させようとすれば使えなくなるHTMLやCSSがいくつかありますよ。 N7の代替製品となるものやNetscape Browser 8.1.2という存在があることを考えると非推奨だとして切り捨てるのも手。 少なくとも、リファラーに利用を推奨することはあまり好ましくないですよ。 IEの次にNetscapeが使われる時代はここ数年間のうちに(?)終わりました。今はIEの次がFirefoxです。 Firefox(やSeaMonkey)などはNetscapeと源流が同じなのでN7の後継のようなものと言っていいかもしれない。
お礼
すみません、私の書き方に不備がありましたようで、NNはVer7.0ではなく7.1だったかと思います(今目の前のPCにインストールされていないので未確認なのですが)。 どちらにしても、NNの7代は対象から外してよい感じなのでしょうか?それともやはり7.0のみが対象からはずすべき? NN8代は日本語バージョンはまだ未リリースのようですね。国内で主に見られることを想定したサイトなので、やはりNNを考慮するなら日本語の最新バージョンはカバーできるといいかと思ったのですが。 ご回答ありがとうございました。まだNN対応は未解決ですので、別に立てさせていただいた質問で、またよろしければアドバイスいただけるとうれしいです。
- suzuki-_-
- ベストアンサー率77% (152/195)
問題はjavascriptでなくhtml自体に対してのNNの解釈にあります <iframe src="#" border="0" width="100%" height="100%" name="iFr"></iframe> こういう記述をした場合、heightの100%という記述は、 なんに対しての100%か、というのを探します でも上階層は幅が決まっていないbodyですよね なので、決まっていないものに対しての100% -> 幅が決められず視覚的に表示されないようになってしまっている というのがNN7の解釈です widthに関してはブラウザの横幅に準じてくれますが、 heightのほうはブラウザ縦幅に適応してくれないという一種の不具合という感じです 正常に動作するブラウザは、body自体の縦と横幅が 何の記述も必要なくブラウザ幅に適応していてくれています なので、これを解決するにはbodyの縦幅=heightを指定してあげるとよいです <body>タグ内にある STYLE="overflow:auto;" の記述を、 STYLE="overflow:auto;height:100%;" とすることで解決します また、ちょっとした雑テクで、 STYLE="overflow:hidden;margin:0;" とすることで、heightを指定しなくてもブラウザに順応させつつ、 きっちりとレンダリングされることが可能です
お礼
ご回答ありがとうございます。他の方の回答も合わせて、いろいろ試してみたのですが、まだ満足いく動作が実現できていません。 別に質問を立てさせていただきましたので、もしよろしければ、またご回答をよろしくお願いいたいたします。
ごめん </script> 書き忘れたけど ・・・わかるよね
こうじゃダメなの? iframeタグをscriptにしてしまう <script><!-- //データ用意とランダム発生部分省略 document.write("<iframe src=\""+riURL[x]+"\"></iframe>"); //-->
補足
すみません、、せっかくご教示いただいたのですが、JavaScriptは転載使用くらいしか分からないので、どう書きかえればいいのかがいまいち良く分かりません... 質問で記載したソースのうち、 ----- <iframe src="#" border="0" width="100%" height="100%" name="iFr"></iframe> ----- の部分だけを、 ----- document.write("<iframe src=\""+riURL[x]+"\"></iframe>"); ----- に書きかえればいいのでしょうか?(その場合<body></body>は<script></script>の中に書かなくても良いのでしょうか?) 上記の方法では、動きませんでした...すみません、補足ご回答いただけますと助かります。
お礼
ご回答ありがとうございます。他の方の回答も合わせて、いろいろ試してみたのですが、まだ満足いく動作が実現できていません。 別に質問を立てさせていただきましたので、もしよろしければ、またご回答をよろしくお願いいたいたします。
補足
たびたびご回答ありがとうございます。 <head> <script type="text/javascript"> <!-- rlURL= new Array(); rlURL[0]="top_1_jp.html" rlURL[1]="top_2_jp.html" rlURL[2]="top_3_jp.html" n=rlURL.length; x=Math.floor(Math.random()*n); window.open(rlURL[x],"iFr"); //--> </script> </head> <body TopMargin=0 LeftMargin=0 RightMargin=0 BottomMargin=0 STYLE="overflow:auto;height:100%;" onLoad="RndmOpen()"> <script><!-- document.write("<iframe src=\""+riURL[x]+"\"></iframe>"); //--> </body> こんな感じになるんでしょうか? (<body>はANo.4の方のご回答を取り入れてみました。) 今、NN検証できない環境にあるのですが、これだと、IE/Opera/Firefoxともポップアップで新しいWindowを立ち上げて読み込む感じになるのですが...(どこか私の記述がおかしいのでしょうか...?)