フレームを使っている場合のリンク
フレームを使っているページで、ドロップダウンメニューなどからリンクさせる場合は、ソースの変更をしなければ、ソースを貼り付けたフレームページにリンク先が表示されてしまいます。
このような場合は、ソースの中のリンクの設定をしている部分に、どのフレームにリンク先を表示させるかを指定する必要があります。
ドロップダウンメニューからリンクさせよう のボタンなしのソースを、フレームページで使う場合の例でご説明します。
ソース(ポイント部分)
<SCRIPT LANGUAGE="JavaScript">
<!--
function Mylink(sel){
mlink=sel.options[sel.selectedIndex].value;
if(mlink!="-"){
location.href=mlink; 
}
}
//-->
</SCRIPT>
上のソースの中で、リンクの設定をしているところは location.href=mlink; の部分です。
このままですと、下のフレームのページの 「ソースがそのままの場合」 のドロップダウンメニューをクリックした場合のように、下のフレームにリンク先が表示されてしまいます。
そうならないように、このページが表示されている上のフレームにリンク先を表示させるには、上のフレームのフレーム名をソースで指定します。
フレーム名を指定した場合
<SCRIPT LANGUAGE="JavaScript">
<!--
function Mylink(sel){
mlink=sel.options[sel.selectedIndex].value;
if(mlink!="-"){
parent.main.location.href=mlink; 
}
}
//-->
</SCRIPT>
ソースの location.href=mlink; の部分を、parent.main.location.href=mlink; に変更しました。このページ場合、上のフレーム名は main になっています。
このように parent.フレーム名.location.href=mlink; というように、リンク先を表示させたいフレームのフレーム名をソースに指定します。
※ フレーム名には top を使わないで下さい。フレームを解除してページ全体へリンクしてしまいます。
ちなみに、このページのフレームソースは下のようになっています。
フレームページのソース
<frameset rows="476,*" framespacing="1" border="1" frameborder="1">
<frame name="
main" src="java_faq-4main.html" scrolling="auto">
<frame name="contents" src="java_faq-4contents.html" scrolling="auto" target="main">
もし、この上下に分割されたフレームを解除して、ページ全体にリンク先を表示させたい場合は、下のようにしてください。
ページ全体の場合
<SCRIPT LANGUAGE="JavaScript">
<!--
function Mylink(sel){
mlink=sel.options[sel.selectedIndex].value;
if(mlink!="-"){
top.location.href=mlink; 
}
}
//-->
</SCRIPT>
リンクの設定をしている部分は top.location.href=mlink; となっています。このソースのように top を指定すると、フレームを解除して、ページ全体にリンクさせることができます。
リモートウインドウから、指定したフレームにリンクをさせる場合は、下のようにします。
リモートウインドウの場合
<SCRIPT LANGUAGE="JavaScript">
<!--
function Mylink(sel){
mlink=sel.options[sel.selectedIndex].value;
if(mlink!="-"){
opener.parent.main.location.href=mlink; 
}
}
//-->
</SCRIPT>
リンクの設定をしている部分は opener.parent.main.location.href=mlink; となっています。このソースのように main を指定すると、リモートウインドウからでも指定したフレームにリンク先を表示させることができます。
ソースの文字をかえる時に、" や ; を消してしまわないようにしてください。
5・6年生にもわかるやさしいJavaScriptのTOPへ