Как я могу превзойти JavaScript в кадре? - PullRequest
0 голосов
/ 18 января 2012

Я пытаюсь написать код JavaScript в метке кадра. Но это не исключает мой блок кода JavaScript.

Вот как я это делаю:

<HTML>
<HEAD>
<TITLE>My HomePage</TITLE>
</HEAD>
<FRAMESET id="frameset1" rows="0,100%,0,0,0" frameborder=0>

<FRAME NAME="seat" SRC="seat/seat.html" frameborder="no" border=0  MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="no" FRAMEBORDER="no" NORESIZE>
<FRAME id="main" NAME="main" SRC="main.html" frameborder="no" border=0  MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="no" FRAMEBORDER="no" NORESIZE>

<script type='text/javascript'>
var myVar=1;
</script>

</FRAME>
<FRAME id="seatinfo" NAME="seatinfo" SRC="seatapi/seatinfo/seat_state.html" frameborder="no" border=0  MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="no" FRAMEBORDER="no" NORESIZE>
<FRAME id="blank" NAME="blank" SRC="blank.html" frameborder="no" border=0  MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="no" FRAMEBORDER="no" NORESIZE>   
<FRAME id="preloadHelp" NAME="preloadHelp" SRC="preloadHelp.html" frameborder="no" border=0  MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="no" FRAMEBORDER="no" NORESIZE> 

Когда я проверяю top.main.myVar в firebug, он отображает неопределенное значение.

Ответы [ 2 ]

0 голосов
/ 18 января 2012

Вместо размещения кода непосредственно в теге кадра, вы можете оценить свой код в целевом кадре, что-то вроде следующего

<FRAME id="main" NAME="main" SRC="main.html" frameborder="no" border=0  MARGINWIDTH="0" MARGINHEIGHT="0" SCROLLING="no" FRAMEBORDER="no" NORESIZE></FRAME>

<script type='text/javascript'>
    window.frames.main.setTimeout(function(){
        // this code will run in the frame
        window.myVar=1; 
    },1);
</script>

в этом случае myVar будет доступен в целевом документе.

0 голосов
/ 18 января 2012

Чтобы ответить на ваш вопрос, посмотрите вызовы javascript для document.frames (или parent.frame в случае работы в кадре).

Это, как говорится, кадры плохая практика, ИМХО. Я настоятельно рекомендую вам не использовать их.

...