"rows", "*,100%"って何の記述?

このQ&Aのポイント
  • あるサンプルjavascriptを見ていて何をしているのかよく分からなかった箇所について教えてほしいと思います。
  • 親画面→子画面を呼び出して、子画面のボタンを押下すると親画面のメインフレームを更新します。
  • opener.parament.document.all.tags("frameset")[cnt-1].setAttribute("rows", "*,100%")という記述は、親画面の一番下のフレームの幅を変更するためのものです。具体的には、フレームの幅を"*,100%"の比率で設定していますが、具体的な画面構成や値の変更によってどのような結果が得られるかはわかりません。詳しい情報を提供できる方がいれば、教えていただけるとありがたいです。
回答を見る
  • ベストアンサー

"rows", "*,100%"って何の記述?

あるサンプルjavascriptを見ていて何をしているのかよく分からなかった箇所について教えてほしいと思います。 コードは下記になります。 親画面→子画面を呼び出して、子画面のボタンを押下すると親画面のメインフレームを更新します。 下記は子画面のボタン押下時のjavascriptに記述されています。 opener.parament.document.all.tags("frameset")[cnt-1].setAttribute("rows", "*,100%") ※ cntはframesetの数が設定されているようでした。   フレームは4つあり、上下左右の構成です。 自分なりに調べた感じでは親画面の一番下のフレームの幅を変更するような記述にみえました。 ただ"*,100%"の記述が何を意味するのかがよくわかりません。幅といっても画面自体なのか、他のフレームとの幅の比率なのか・・・。 実際に色々値を変えて動かしてみたのですが、何が変わっているのかよくわかりませんでした。 もしよろしければどなたか教えて頂けないでしょうか。

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

  • ベストアンサー
  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.1

cntはフレームの数ではなくframeset数じゃないかなと思いますが・・・ framesetというのは、各フレームを包括するタグです。 <frameset> <frame src="frame1.html" name="frame1"> <frame src="frame2.html" name="frame2"> </frameset> やじるしこんな感じですね。 つまり、opener.parament.document.all.tags("frameset")[cnt-1]は 開いたページの中にある最期のフレームセットではないかなと推測します。 [cnt-1]はインデックス番号です。インデックスは0からカウントされるので、HTML上一番最後に出現するframesetのインデックス番号は[framesetの数-1]になるわけです。 で、本題の.setAttribute("rows", "*,100%")についてですが、要はこのframeset[cnt-1]の属性「rows」に「*,100%」を設定するという意味です。 つまりこれがセットされたタグを書いてみると、上記のタグが <frameset rows="*,100%"> <frame src="frame1.html" name="frame1"> <frame src="frame2.html" name="frame2"> </frameset> と言うことです。 こう書いた場合、frame1とframe2は縦並びになり、1段目のframe1の高さは余った高さ分になり、frame2の高さは100%になることになります。これはframesetの基本的なHTMLの記述方法なのでHTMLのリファレンスなど見ればすぐに分かると思います。 ご参考まで。

_alias_
質問者

お礼

お返事遅れてすみません。 なるほどフレームの数ではないのですね。とてもよくわかりました。 有難うございました。

その他の回答 (1)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

「*」はブラウザに計算させるような意味合いで、ウィンドウサイズと指定したサイズから決まってくる(残りの)サイズなどになります。 ご質問の例の場合は、rows属性の値を "*,100%" にしています。 詳しくは↓を  http://w3g.jp/xhtml/dic/frameset

_alias_
質問者

お礼

お返事遅れてすみません。 お答え有難うございます。サイトもあわせてみてみます。

関連するQ&A

  • 親ウィンドウの別フレームを子ウィンドウから操作したい

    いろいろ試しているのですが、理解不足のせいでしょうが、どうやってもできません! 内容は以下の通り(分からないのは3)です。どうぞ宜しくお願いいたします。 1:画面を、AとBの2つのフレームに分割しています。 【index.html】 <frameset>  <frame src="A.html" name="A">  <frame src="B.html" name="B"> </frameset> 2:Aフレーム内に記述してあるaaaアンカーをクリックすると、子画面ko.htmlを開きます。 <a href="javascript:void(0)" onclick="window.open('path=ko.html','_blank');">子画面</a> 3:ko.htmlではbbbというアンカーがあって、それをクリックすると、"親画面のBフレームにbbbで指定したリンク内容を表示したい"のです。 <a href="javascript:void(0)" onclick="opener.window.location=('B?path=/home/~/~/ZZZ.html');">開きたいファイルZZZ.html</a> と書くと、openerはAだからAにZZZ.htmlの内容が表示されてしまうので、(全くおかしな記述をしているのかもしれませんが・・・(- -;))あちこち調べながら、 B.opener.window.locationとか、 B.opener.window.location.hrefとか、 parent.B.window.locationとか、 parent.frames[1].window.locationとか、 ほかにもいろいろやってみたのですが、出来ませんでした・・・。 このような別フレームの操作が出来る方法があれば教えてください。 宜しくお願いいたします。

  • javascriptで選択された行数を知る方法

    お世話になっております。 親画面にリストを表示し、そのリストの行ごとにボタンをつけております。 特定の行のボタンを押下すると子画面のポップアップが開き選択された 行に表示されているテキストを子画面に表示させたいのですが、どうも 方法がよくわかりません。 親画面のほうではPHPを使って$row[1]としてDBから値を取得しています。 リストのボタンが押下された時点で何行目のボタンを押下されたかを、子画面 が知る方法がわかれば、その行の$row[1]を取得すればいいと思うのですが、 何行目のボタンが押下されたかを子画面に知らせる方法が思い浮かびません。 あつかましいお願いなのですが、ヒントでもかまわないのでご教示お願いできない でしょうか? よろしくお願い申しあげます。 -----親画面のリスト表示 <head> <title></title> <script type="text/javascript"> function DispPopup(){ window.showModalDialog('/popup13.html', window, 'width=300,height=200'); } </script> </head> <?php $data_cnt=0; print "<form name=\"list\">"; print "<ul id=\"sort\">"; while ( $row = mysqli_fetch_array( $result ) ){ $data_cnt = $data_cnt + 1; print "<li id=\"idx_$data_cnt\" class=\"rr\">"; print "<span class=\"hl\">"; print "<input type=\"text\" value=\"$data_cnt\" id=\"sw_$data_cnt\" />"; print "</span>No.$data_cnt $row[0] $row[1]"; print "<input type=\"button\" value=\"変更\" OnClick=\"DispPopup()\">"; print "</li>"; } print "</ul>"; print "</form>" ?> -----子画面のポップアップ表示 <head> <title></title> <script language="JavaScript"> function disp(){ var opener=window.dialogArguments; //元画面のフォーム var opener_form = opener.document.forms(0); //自画面のテキストエリアを取得 var objTextarea = document.getElementsByName('ta')[0]; objTextarea.value += opener_form["str_2"].value; } </script> </head> <body onLoad="disp()"> <textarea name="ta"></textarea> </body>

  • 「画面が閉じられた」という行為をトリガーとして使えますか?

    親画面から子画面をポップアップ表示し、子画面に作成したボタンから(window.opener)をコールして、子画面を閉じる→親画面の処理を行う、という処理を実現しています。 ボタン押下時にJavaScriptをコールすることで処理は行えるのですが、ウィンドウの右上にある「×」ボタンや、タスクバーを右クリック→閉じるなどを行った際にも同じような処理を行うことはできるのでしょうか? 「画面が閉じられた」というトリガーにて処理を行うことができるのでしょうか? よろしくおねがいします。

    • ベストアンサー
    • Java
  • 画面を閉じる(×ボタンやタスクバーから)をトリガーに処理を行えるのでしょうか?

    親画面から子画面をポップアップ表示し、子画面に作成したボタンから(window.opener)をコールして、子画面を閉じる→親画面の処理を行う、という処理を実現しています。 ボタン押下時にJavaScriptをコールすることで処理は行えるのですが、ウィンドウの右上にある「×」ボタンや、タスクバーを右クリック→閉じるなどを行った際にも同じような処理を行うことはできるのでしょうか? 「画面が閉じられた」というトリガーにて処理を行うことができるのでしょうか? onUnloadイベントを試しましたが、「×」ボタンや、タスクバーを右クリック→閉じる場合は処理がおこわなわれませんでした。 よろしくおねがいします。

  • javascriptのopenerでエラー

    naritanと申します。 現在、ファイルのアップロード機能を作成しております。 親ウィンドウから子ウィンドウを開いて、開いた子ウィンドウでアップロードするファイルを選択し、ボタンを押下時にcgiを実行して実現しています。 そこで、子ウィンドウでボタンを押下した時に、選択したファイルの名前を親ウィンドウに表示したいと思い、ボタン押下時にまず、javascriptに処理を移し、openerメソッドを使用して実現しようとしているのですが、「アクセスが拒否されました」というjavascriptのエラーが表示されてしまいます。 記述は以下のようにしています。 -------------------------------------------------- window.opener.document.FORM1.file_nm.value = str2; -------------------------------------------------- ※str2:ファイル名保持変数 ※file_nm:親ウィンドウFORM1上のテキストボックス名 ちなみに親ウィンドウと子ウィンドウの拡張子は異なっているので、ためしに拡張子を合わせて実行してみたところ、ファイル名は親ウィンドウに表示されたのですが、cgiが動かなくなってしまいました。 ちなみに親ウィンドウはhtsファイル、子ウィンドウはhtmlファイルです。 お分かりになる方が見えましたら、ご教授願います。

  • location.replaceについて

    親ページから子ページを表示います。 ※JavaScriptのwindow.openで子ページを開いています。 子ページにはテキストボックス等を配置していて項目を入力したら[閉じる]ボタンを押下して子ページを閉じて子ページで入力された値で親ページを再表示して反映させていますがここで1つ問題が発生してしまいました。 ※子ページの[閉じる]ボタンにはonClickでJavaScriptを設定しています。 JavaScriptの内容は下記の通りです。 function closeScript(){   window.opener.location.reload();   window.close(); } 押下すると「再試行」のダイアログが表示されてしまって・・・ ネットで検索して調べてみたら「再試行」のダイアログの制御はできないとの事でした。 再度、ネットで調べていたら下記のような記述がありました。   location.replace(location.href); 上記のJavaScriptを下記のように変更して子ページの[閉じる]ボタンを押下してみたら「再試行」のダイアログが表示されず、子ページを閉じる事が出来ました。 しかし、親ページは何も反応がないような・・・ そこで皆さんに質問があります。 「location.replace(location.href);」が何をやっているのかをネットで調べてみましたが・・・ 「location.replace」・・・「指定したページへ移動する」との事でした。 「location.href」・・・現在表示しているページのアドレス(URL)を示す文字列です。 上記のスクリプトは何を行っているのでしょうか。実際に動かしてもうんともすんとも言わないので・・・ くだらない質問で申し訳ありませんがわかりやすく教えていただけませんでしょうか。 宜しくお願いします。

  • 子画面から親画面のデータを操作するには?

    4つのフレームから成る画面より子画面を開き、 (2番目のフレームに子画面を呼び出すボタンが有ります) 子画面から親画面の2番目と3番目のフレームのデータを 操作したいのですが、上手くいきません。 window.top.opener.frames[1].formxxx.xxxx.value=xxxxx; window.top.opener.frames[2].formxxx.xxxx.value=xxxxx; で良いと思ったのですが。。。 どなたか分かる方いらっしゃったら教えて下さい。

  • javascriptが動かない

    javascript初心者です。 画面を三分割し、画面ロード時にそれぞれのフレームの位置を表示するという、サンプル的なのを作ったのですが、画面は分割されますが、上、左、右 ってのが表示されないです。 javascriptの記述の仕方が根本的に違いますかね? 下記に書いてあるのがそのソースコードです。 どなたかお願いします。 <html> <head> <title>FrameSample</title> <script type="text/javascript" > function frameinit(){ frames["top"].document.write("上"); frames["left"].document.write("左"); frames["right"].document.write("右"); } window.onload=frameinit; </script> </head>    <frameset rows="100,*">      <frame src="newpage4.html" name="top" >       <frameset cols="50,50">          <frame src="newpage4.html" name="left">         <frame src="newpage4.html" name="right">        </frameset>   </frameset> </html>

  • 画面の四分割の方法について

    教えていただきたいのですが、↓で作成した画面の最下部にbottom(titleと同じ幅で画面の下部)を作りたい場合は、どのように追加記述すべきなのでしょうか? いろいろ試しているのですが上手くいかないのです(汗 <frameset rows="90,*" border="0" frameborder="0" framespacing="0"> <frame name="title" src="title.html" scrolling="NO" noresize> <frameset cols="180,*" border="0" frameborder="0" framespacing="0"> <frame name="menu" src="menu.html" noresize> <frame name="body" src="body.html"> </frameset> </frameset> 宜しくお願いいたします。。。

    • ベストアンサー
    • CSS
  • 子画面から親画面をクローズしたい

    子画面から親画面をクローズすると確認メッセージが表示されます。 非表示の方法はありますか? 現在の処理内容:  親画面:   ボタン押下時 onclick="window.opener='main';window.open('URL');return false;"  子画面:   onload時 window.opener.close(); 確認ブラウザ:IE10、Chrome43  ※IE10では表示されるが、Chrome43では表示されない。

専門家に質問してみよう