Можно ли открыть новый фрейм в HTML ниже существующего фрейма в HTML? - PullRequest
0 голосов
/ 07 апреля 2010

У меня есть html main.html как дано ----- main.html ----------------

    <title>FlexTrail</title>
    <script  src="main.js"></script>
    <frameset rows='200,200'>
        <frame id='one'  src="file:///C:/Documents%20and%20Settings/demo/Desktop/FlexTrail/project1/bin-debug/project1.html" frameborder='0' />
        <frame id='two'   src="" frameborder='0' /> 

    </frameset>

</head>
<body >

</body>

здесь первый кадр содержит HTML, сгенерированный Flex Builder 3, и при нажатии кнопки на этом проекте Flex я вызываю функцию func2 () в main.js с использованием внешнего интерфейса.

---- main.js -----------------

var flag2 = 0; функция func2 () { flag2 = 1; . Parent.frames [ 'один'] Местонахождение = "Файл: /// C: /Documents%20and%20Settings/demo/Desktop/FlexTrail/project1/bin-debug/project1.html"; . Parent.frames [ 'два'] Местонахождение = "Файл: /// C: /Documents%20and%20Settings/demo/Desktop/FlexTrail/project2/bin-debug/project2.html"; }

Я хочу, чтобы другой файл открывался в том же окне ниже первого. Но проблема здесь в том, что когда я запускаю это в IE8, другой кадр открывается в другом окне, но в Firefox я не получаю никакого разрешения.

Примечание: - Javascript включен как в браузерах, так и всплывающие окна не блокируются

Плз, скажите мне, где я не прав

Заранее спасибо

Прашант Дубей

Ответы [ 4 ]

2 голосов
/ 07 апреля 2010

Ваш набор фреймов неправильный. Фрейм-набор не является страницей, поэтому он не имеет тела:

<html>
  <head>
    <title>FlexTrail</title>
    <script src="main.js"></script>
  </head>
  <frameset rows='200,200'>
    <frame id="one" src="file:///C:/Documents%20and%20Settings/demo/Desktop/FlexTrail/project1/bin-debug/project1.html" frameborder="0" />
    <frame id="two" src="" frameborder="0" />   
  </frameset>
</html>
2 голосов
/ 07 апреля 2010

Хорошо, найдено исправление.Необходимо добавить тег NAME к кадрам, а также теги ID.Также нужно правильно отформатировать теги frameset, поскольку другие ответили, но без тега NAME он все равно не будет работать.

Редактировать (снова): Кроме того, заметил ваш другой квест о нескольких файлах и одном скрипте.Я просто поместил скрипт для моего примера ниже, но вы также можете сделать его файлом .js.Вместо того, чтобы загружать его во все html-файлы, вы можете просто использовать js-вызовы в стиле parent.function () во вторичных файлах, которые загружаются во фреймы.Опять же, зависит от того, сколько кода есть и что вы пытаетесь сделать и т. Д. Пробег может отличаться.=) (Вы заметите, что мне не нужно было добавлять скрипт в мой файл 1.html.)

См. Ниже ...

Основной html:

<HTML>
<HEAD>
<TITLE> Title Goes here </TITLE>
<script type="text/javascript">
var flag2=0; 
function func2() 
{ 
flag2=1; 
parent.frames['one'].location="1.html"; 
parent.frames['two'].location="3.html";
}
</script></HEAD>
<FRAMESET rows="115,*">
            <FRAME SRC="1.html" ID="one" name="one">

            <FRAME SRC="2.html" ID="two" name="two">

</FRAMESET>

</HTML>

Тогда 1.html:

<HTML>
<HEAD>
<TITLE> Cow goes Moo </TITLE>
</HEAD>
<body>
 One.html 
    <input onclick="parent.func2();" id="Button1" type="button" value="button" />
</body>

</HTML>

2.html и 3.html могут быть чем угодно, не имеет значения.

Проблема с этой настройкой заключается в том, что IE ищеттег ID в javascript, но FireFox ищет атрибут NAME фрейма.Выше страницы работают в IE, FF и Chrome.

1 голос
/ 07 апреля 2010

Вот пример с фреймами, которые могут помочь

Main.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

    <script type="text/javascript">
    function loadTwo()
    {
    document.getElementById('two').src = 'two.htm'
    document.getElementById('two').style.display='block';
    }

    function loadThree()
    {
    document.getElementById('two').src = 'three.htm'
    document.getElementById('two').style.display='block';
    }
    </script>

    <title>Untitled Page</title>
</head>
<body>
    <iframe id="one" src="One.htm"></iframe>
    <iframe id="two" style="display: none" src="Two.htm"></iframe>
</body>
</html>

One.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
<script language="javascript" type="text/javascript">
// <!CDATA[

function load2_onclick() {
parent.loadTwo()
}

function load3_onclick() {
parent.loadThree()
}

// ]]>
</script>
</head>
<body bgcolor="#ff0000">
    <input id="load2" type="button" value="Load 2" onclick="return load2_onclick()" />
    <input id="load3" type="button" value="Load 3" onclick="return load3_onclick()" />
</body>
</html>

Two.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Untitled Page</title>
</head>
<body  bgcolor="#00ff00">

</body>
</html>

Three.htm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Untitled Page</title>
</head>
<body style="background-color: #0000ff">
</body>
</html>
1 голос
/ 07 апреля 2010

Фреймы использовались для сегментирования веб-страниц, как фрагменты в инструментах дизайна. Они не могут перекрывать друг друга.

Может быть, вы могли бы достичь того, что хотите, используя iframes вместо использования frameset. Смотрите этот сайт для демонстрации. Но опять же, я не удивлюсь, если есть браузеры, которые не поддерживают перекрывающиеся фреймы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...