• ベストアンサー

<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> ========================================= よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#39970
noname#39970
回答No.3

>の部分だけを、 >書きかえればいいのでしょうか その場合は >function RndmOpen(){ これと4行下の >} を削って。(他はそのまま) そうするとHTMLが読まれて来る時にbodyに到達するまえにそこが実行されて rlURL と x が設定される で、件の書き換え場所で 実際の書き込みが行われる。

horus-xxx
質問者

お礼

ご回答ありがとうございます。他の方の回答も合わせて、いろいろ試してみたのですが、まだ満足いく動作が実現できていません。 別に質問を立てさせていただきましたので、もしよろしければ、またご回答をよろしくお願いいたいたします。

horus-xxx
質問者

補足

たびたびご回答ありがとうございます。 <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を立ち上げて読み込む感じになるのですが...(どこか私の記述がおかしいのでしょうか...?)

その他の回答 (4)

  • MAN_MA_RUI
  • ベストアンサー率41% (426/1024)
回答No.5

> 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の後継のようなものと言っていいかもしれない。

horus-xxx
質問者

お礼

すみません、私の書き方に不備がありましたようで、NNはVer7.0ではなく7.1だったかと思います(今目の前のPCにインストールされていないので未確認なのですが)。 どちらにしても、NNの7代は対象から外してよい感じなのでしょうか?それともやはり7.0のみが対象からはずすべき? NN8代は日本語バージョンはまだ未リリースのようですね。国内で主に見られることを想定したサイトなので、やはりNNを考慮するなら日本語の最新バージョンはカバーできるといいかと思ったのですが。 ご回答ありがとうございました。まだNN対応は未解決ですので、別に立てさせていただいた質問で、またよろしければアドバイスいただけるとうれしいです。

  • suzuki-_-
  • ベストアンサー率77% (152/195)
回答No.4

問題は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を指定しなくてもブラウザに順応させつつ、 きっちりとレンダリングされることが可能です

horus-xxx
質問者

お礼

ご回答ありがとうございます。他の方の回答も合わせて、いろいろ試してみたのですが、まだ満足いく動作が実現できていません。 別に質問を立てさせていただきましたので、もしよろしければ、またご回答をよろしくお願いいたいたします。

noname#39970
noname#39970
回答No.2

ごめん </script> 書き忘れたけど ・・・わかるよね

noname#39970
noname#39970
回答No.1

こうじゃダメなの? iframeタグをscriptにしてしまう <script><!-- //データ用意とランダム発生部分省略 document.write("<iframe src=\""+riURL[x]+"\"></iframe>"); //-->

horus-xxx
質問者

補足

すみません、、せっかくご教示いただいたのですが、JavaScriptは転載使用くらいしか分からないので、どう書きかえればいいのかがいまいち良く分かりません... 質問で記載したソースのうち、 ----- <iframe src="#" border="0" width="100%" height="100%" name="iFr"></iframe> ----- の部分だけを、 ----- document.write("<iframe src=\""+riURL[x]+"\"></iframe>"); ----- に書きかえればいいのでしょうか?(その場合<body></body>は<script></script>の中に書かなくても良いのでしょうか?) 上記の方法では、動きませんでした...すみません、補足ご回答いただけますと助かります。

関連するQ&A

  • 続:<iframe>内にHTMLをランダム表示するには?(NN対応)

    QNo.2771577で質問させていただいた続きになります。http://questionbox.msn.co.jp/qa2771577.html iframe内にランダムでHTMLを読み込む動作で苦労しています。いくつか試して実現できたのですが、NNのみ読み込まないため、以下の書き方を試してみました。 この書き方だとNNでも動作するのですが、ポップアップで別Windowが立ち上がってしまうため(win:IE/Opera/Firefoxすべて)、ポップアップにせずに同Window内に読み込む書き方はできないでしょうか? ================================== <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> ================================== よろしくお願いします。

  • <iframe>内にHTMLをランダム表示するには?

    かなりの素人なので説明不足などで分かりづらいところが多々あると思いますが、 何卒宜しくお願い致します。 同じhtmlに複数のiframeがあるのですが、 その全てのiframeをランダムにしたいのですが、 あまりの素人なので全く分かりません。 申し訳ありませんが、 多少いじってコピペするくらいまでのソースを教えて頂けますでしょうか? 宜しくお願い致します。 iframe一つだけのランダムは以下のソースでできました。 <head> <script type="text/javascript"> <!-- function RndmSubFlame(){ rlURL= new Array(); rlURL[0]="01.html" rlURL[1]="02.html" rlURL[2]="03.html" n=rlURL.length; x=Math.floor(Math.random()*n); sub_flame.location.href = rlURL[x]; } //--> </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> 以下のhtmlのようなページです。 できましたら、このソースに書き加え頂けますと 大変助かります。 宜しくお願い致します。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title></title> </head> <body> <table border="1" width="84%" height="87"> <tr> <td width="33%" height="81"><iframe src="a01.html" frameborder="0" width="100%" height="190" name="01" scrolling="no"></iframe></td> <td width="33%" height="81"><iframe src="a01.html" frameborder="0" width="100%" height="190" name="02" scrolling="no"></iframe></td> <td width="34%" height="81"><iframe src="a01.html" frameborder="0" width="100%" height="190" name="03" scrolling="no"></iframe></td> </tr> </table> </body> </html>

  • <iframe>内にHTMLをランダム表示するには?続きです。

    先日の<iframe>内にHTMLをランダム表示するには?の続きなのですが、 http://questionbox.msn.co.jp/qa2962976.htmlの疑問は 皆様のお力で解決しました。 誠にありがとうございました。 もう一つ教えて頂きたいことがあるのですが、 かなりの素人なので説明不足など分かりづらいところが多々あると思いますが、 何卒宜しくお願い致します。 同じhtmlに複数のiframeを配置し、 各iframeをランダムにしたいのです。 その際、各iframeは別々のフォルダーに収納されているhtmlを 表示するようにしたいです。 例えば、同じhtmlに iframe1、iframe2、iframe3があるとし、 01、02、03という3つのフォルダーの中に 01.html、02.html、03.htmlがそれぞれ収納されているとした場合、 iframe1は01のフォルダーの中のhtmlをランダムで表示し、 iframe2は02のフォルダーの中のhtmlをランダムで、 iframe3は03のフォルダーの中のhtmlをランダムで、 といったランダム表示にしたいです。 あまりの素人なので全く分かりませんので、 大変申し訳ありませんが、 多少いじってコピペするくらいまで完成されたソースを教えて頂けますでしょうか? 宜しくお願い致します。 ------------------------------------------------------------------------- 以下のソースは、 3つのiframeに同じフォルダー内のhtmlをランダムで表示させることができたソースです。 教えてもらいました。 こちらは参考までに載せました。_ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title></title> <script type="text/javascript"> <!-- function RndmSubFlame(){ rlURL= new Array(); rlURL[0]="01.html" rlURL[1]="02.html" rlURL[2]="03.html" n=rlURL.length; x1=Math.floor(Math.random()*n); x2=Math.floor(Math.random()*n); x3=Math.floor(Math.random()*n); s01.location.href = rlURL[x1]; s02.location.href = rlURL[x2]; s03.location.href = rlURL[x3]; } //--> </script> </head> <body onload="RndmSubFlame()"> <table border="1" width="84%" height="87"> <tr> <td width="33%" height="81"><iframe src="a01.html" frameborder="0" width="100%" height="190" name="s01" scrolling="no"></iframe></td> <td width="33%" height="81"><iframe src="a01.html" frameborder="0" width="100%" height="190" name="s02" scrolling="no"></iframe></td> <td width="34%" height="81"><iframe src="a01.html" frameborder="0" width="100%" height="190" name="s03" scrolling="no"></iframe></td> </tr> </table> </body> </html> ------------------------------------------------------------------------- 以下のhtmlソースに書き加えてもらえると大変助かります。 何卒、宜しくお願い致します。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title></title> </head> <body> <table border="1" width="45%" height="448"> <tr> <td width="46%" height="210"><iframe src="01/01.html" frameborder="0" width="100%" height="190" name="01" scrolling="no"></iframe></td> <td width="54%" height="442" rowspan="2"><iframe src="03/01.html" frameborder="0" width="100%" height="190" name="03" scrolling="no"></iframe></td> </tr> <tr> <td width="46%" height="226"><iframe src="02/01.html" frameborder="0" width="100%" height="190" name="02" scrolling="no"></iframe></td> </tr> </table> </body> </html>

  • HTMLでインラインフレーム(IFRAME)のURLをランダムにしたい

    インラインフレーム(IFRAME)のURLをランダムで変えて、広告を表示させたいです。 http://blog-imgs-**.fc2.com/t/r/i/***/randam_ad.js randam_ad.jsの内容は以下です。 ------------------------------------ function randomAd(){ var table = [  "http://www.yahoo.co.jp/",  "http://bbpromo.yahoo.co.jp/",  "http://my.yahoo.co.jp/", ]; var objDate = new Date(); var myURL = table[objDate.getSeconds() % 3]; document.write( '<IFRAME SRC="',myURL,'" name="sample" width="468" height="60" scrolling="no" border="0" marginwidth="0" style="border:none;" frameborder="0">' ); document.write( 'この部分はインラインフレームを使用しています。' ); document.write( '</IFRAME>' ); } ------------------------------------ そこで、IFRAMEを表示させたいページを以下のように記述しました。 ------------------------------------ <HTML> <HEAD> <TITLE></TITLE> <SCRIPT src="http://blog-imgs-**.fc2.com/t/r/i/***/randam_ad.js"> </SCRIPT> </HEAD> <BODY> <SCRIPT language="JavaScript"> <!-- randomAd(); //--> </SCRIPT> </BODY> </HTML> ------------------------------------ ただ、全く反応がありません。表示されないのです。 ご教授お願いいたします。

  • IFRAMEのscrollingを常にnoにしたい

    iframeを使ってBBSをscrolling="no"で表示したいのですが、 src="パスワード.cgi"から自動でbbs.cgiになったときにスクロール表示してしまいます。 iframe内で表示先が変更された場合でもスクロール表示しないようにできるのでしょうか?もしできるのであれば教えていただきたいのですが… 掲示板をiframe と言うことで、某ホームページをを参考にスクロールが表示さ れないようにしてみました。 が以下のようにパスワードを入力後に表示するiframe はスクロールを表示して しまいます。 <script type="text/javascript"> <!-- function LoadFrame(frid) { var IFR = document.getElementById(frid); IFR.style.height = (IFR.contentWindow)? IFR.contentWindow.document.body.scrollHeight: document.frames[frid].document.body.scrollHeight; } //--> </script> <iframe src="member/gate.cgi" name="coach" onload="LoadFrame(this.id)" id= "Ifr" width=497 frameborder="0" scrolling="no"></iframe> 試行錯誤しながらなんとかやってる超初心者です。よろしくお願いします。

  • iframe内をリロードできますか?

    たとえば <HTML> <head> <script language="javascript"> <!-- function a1reload(){ "iframe内をリロードする文章" } //--> </script> </head> <body> <iframe src="a1.html" id="a1iframe"><br> <a href="javascript: a1reload()">ここをクリック</a> </body> </HTML> こんな感じでiframe内をリロードできないでしょうか? お願いします。

  • 単独で開かれたiframeを親ページに表示したい

    ブログ記事(blog1.html、blog2.html、blog3.html)を親ページ(index.html)のiframeとして表示しています。 親ページを開いた際には、デフォルトで最も新しいブログblog3.htmlが表示されるようになっています。 ブログ記事が単独で開かれた場合には、 if (window == window.parent) { location.href = "./index.html"; により自動的に親ページに導くようにしていますが、その際に開かれたブログ記事を表示したいと思います。 当たり前ですが、現在はblog3が開かれてしまいます。 どのようにしたらいいでしょうか。 以下、現在確認中のサンプルスクリプトです。 ■親ページ■ <html lang="ja"> <head> <meta charset="UTF-8"> <title>index</title> </head> <body> <p>index.html</p> <iframe src="./blog3.html" frameborder="2" width="300" height="100"></iframe> <div id="result"></div> </body> </html> ■ブログ1■ <html lang="ja"> <head> <meta charset="UTF-8"> <title>blog1</title> </head> <body> <p>blog1.html</p> <script> // 単独で開かれている場合 if (window == window.parent) { location.href = "./index.html"; // iframeで開かれている場合 } else { } </script> </body> </html> ■ブログ3■ <html lang="ja"> <head> <meta charset="UTF-8"> <title>blog3</title> </head> <body> <p>blog3.html</p> <script> // 単独で開かれている場合 if (window == window.parent) { location.href = "./index.html"; // iframeで開かれている場合 } else { } </script> </body> </html>

  • インラインフレーム+ランダム表示

    インラインフレームの中をランダム表示させたいのです。 そこで、大元のページに <iframe src="○○○.html" width="570" height="300"name="AAA"align="left" frameborder="no" scrolling="no" > このページはインラインフレームを使用しております。 未対応ブラウザは閲覧できませんのでご了承下さい。 </iframe> と記述し、○○○.htmlの中には <html> <head> <title></title> <script language="JavaScript"><!-- jpURL = [ "tk1.html", "tk2.html", "tk3.html", "tk4.html" ]; n = Math.floor(Math.random() * jpURL.length); document.write('<frameset>'); document.write('<frame src="'+jpURL[n]+'" name="rightFrame">'); document.write('</frameset>'); // --></script> </head> </html> という記述をしています。 このようにランダムに表示できるように記述すると、左横に出る窪んだようになる縦線(frameborder!?)と縦のスクロールバーが出てしまいます。 これを表示しないようにしたいのですが、どうやっても消す事が出来ません。 これを無くし自然な感じにするには、どのようにしたら良いでしょうか? 是非教えてください。 宜しくお願いします。

    • ベストアンサー
    • HTML
  • 画像のランダム表示について

    ある方のスクリプトを参考にさせて頂いたのですが、 色々なサイトで調べてみると、どうも他にも色々な方法があるようで、迷っています。 私が書いたスクリプトは、以下の物なのですが、直した方が良い所や、または、お勧めの方法を教えてください。 <SCRIPT language=JavaScript> <!-- function randomimage() { rimage = Math.floor(Math.random() * 10); // if (rimage == 0) { img = "img/top/0.jpg" }; // if (rimage == 1) { img = "img/top/1.jpg" }; // if (rimage == 2) { img = "img/top/2.jpg" }; // if (rimage == 3) { img = "img/top/3.jpg" }; // if (rimage == 4) { img = "img/top/4.jpg" }; // if (rimage == 5) { img = "img/top/5.jpg" }; // if (rimage == 6) { img = "img/top/6.jpg" }; // if (rimage == 7) { img = "img/top/7.jpg" }; // if (rimage == 8) { img = "img/top/8.jpg" }; // if (rimage == 9) { img = "img/top/9.jpg" }; // tag1 = "<IMG SRC='" + img + "' border=0>"; }; // end--> </SCRIPT> <SCRIPT language=JavaScript> <!-- randomimage(); document.write(tag1); // end--> </SCRIPT> これを<BODY></BODY>の間に入れて表示させる物です。

  • NN で XML を使いたい

    次のスクリプトを、NN でも動作するようにしたいのですが、 どのようにすればいいのでしょうか。 (場合分けは省略してくださって構いません) head タグ内の script タグ内 nodes = eList.XMLDocument.getElementsByTagName("date"); len = nodes.length; for (i=0; i<len; i++) { dates[i] = nodes[i].text; areas[i] = nodes[i].nextSibling.text; } body タグ内 <xml id="eList" src="exception.xml" /> よろしくお願い致します。