1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

1 link para 2 frames??

Discussão em 'Programação' iniciada por Slowmottion, 28 de Fevereiro de 2003. (Respostas: 4; Visualizações: 2787)

  1. Slowmottion

    Slowmottion Power Member

    Boas, estou a fazer uma página em FrontPage e a ideia é:

    frame do lado esquerdo tem imagemap.
    quando clico num desses links

    Quero que me abra na frame do centro, uma página que em cima tem uma frame com links para em baixo ligar aos bookmarks.

    para não andar para cima e para baixo.

    Não sei se percebem a ideia...

    É possível que em cada link da esquerda tenha dois destinos?
    um para a frame de cima e outro para a de baixo?

    Grande confusão...


    Se perceberem e puderem ajudar, agradeço.
     
  2. Ozymandias

    Ozymandias Power Member

    Olá, Slowmottion!

    Não sei se percebi a ideia, não conheço o frontpage, e não gosto muito de usar frames, mas cá vai:

    Pelo que percebi, corrige-me se assim não fôr, tens duas frames, uma à esquerda, a que chamarei mainmenu, e uma à direita a que chamarei mainframe.
    O que pretendes, é que clicando num objecto (não sei se é importante usares imagemaps, às vezes poupa-se bastante peso utilizando imagens separadas, mas isso é secundário, cada área constituirá em termos práticos um objecto) do menu, te apareça uma página com duas novas frames, uma em cima a que chamarei top_menu, e uma ao centro a que chamarei content.
    Passas assim de uma página inicial

    mainmenu | mainframe

    Para uma nova página com três frames:

    topmenu / mainmenu | content

    Bom em primeiro lugar, o que é importante reter, é que quando estás a trabalhar com frames, e em termos práticos, cada frame é uma janela do browser que podes manipular.

    Tens duas hipóteses de fazer isto:

    Utilizando frames "aninhadas" dentro de frames (deverás ter muito cuidado com os nomes das frames e as suas relações para não embrulhares tudo) ou utilizando um script que associe a cada objecto do menu o carregamento simultâneo das duas frames correspondentes.

    No primeiro caso, podes funcionar como se a tua mainframe carregasse um novo site. Deste modo, a cada chamada do mainmenu carregas no teu target mainframe a página que contém as frames topmenu e content. Essa página será naturalmente a página na qual defines essas frames,a frameset, a qual constitui a parent frame das frames topmenu e content. Podes fazer isto facilmente, usando apenas HTML, (DTD HTML 4.01 Frameset//EN pelo menos) sem links duplas, e estarás a tratar com "nested frames". A tua primeira frameset, a que define as frames mainmenu e mainframe, constituirá a frame "avó" das frames visíveis.

    Como cada frame é uma janela, dá jeito ter à mão as suas propriedades.
    Resumidamente, das propriedades das Janelas que estão relacionadas com o uso de frames, tens:

    Frames[] o array de todas as frames contidas na janela;
    lenght o número de frames na janela (window.frames.lenght)
    name nome da janela
    parent referência à janela mãe (a janela naquela a que tu estás se insere directamente)
    self referência à própria janela (aquela em que estás)
    top referência à janela de topo; se estás a trabalhar sem aninhamento de frames, a top frame e a parent frame serão a mesma. Se por outro lado o elemento frame carrega um documento que por sua vez contém frames, a topframe será a que contém todas as outras, a "avó".

    Assim, se quiseres referênciar a janela correspondente ao espaço ocupado pela mainframe a partir da frame content, por exemplo, e se o nome que deste à frame content fôr content, poderás fazer:
    parent.content (podes ainda aceder-lhe através da sua posição no array de definição, se a sua posição fôr a terceira no array podes fazer: parent.frames[3].name)
    Se por outro lado quiseres referenciar a janela correspondente à janela do browser (que ocupará o espaço ocupado pelo conjunto de todas as frames) deverás fazer:
    top.content

    No segundo caso, e penso que desta forma funciona melhor, e uma vez que podes retirar o enquadramento das frames (borders), podes ter logo na página inicial as três frames e estarás a tabalhar com uma frameset apenas, o que reduzirá a probabilidade de te perderes pelo meio e poderá tornar o site mais leve; terás nesse caso de ter algum cuidado com os fundos das frames; se se tratar de uma cor única não há problema, mas se tiveres uma imagem pequena de fundo, terás de fazer as contas para que na vertical a linha de baixo da imagem repetida não saia cortada, e terás de utilizar dimenções absolutas, uma vez que as relativas dependerão do dispositivo de visualização do utilizador.

    Com um script bastante simples, podes associar a cada objecto do teu mainmenu, não uma link mas um evento; esse evento apresentará a página topmenu no target frame topmenu e a página content no target frame content; terás assim um carregamento muito provavelmente mais rápido e um maior controlo sobre o site.

    Para cada link do teu mainmenu deverás então definir um evento onclick ao qual poderás associar dois acontecimentos: a abertura da página topmenu correspondente na frame topmenu (target) e a abertura de uma página inicial correspondente na tua frame content. Depois será só ligar cada item do teu topmenu às páginas de conteúdo a aparecerem na frame content. A associação dos dois acontecimentos ao evento onclick deverá ser definida como uma função.

    Acho que é isto, de qualquer modo, se estiver para aqui a dizer alguma asneira, agradeço que alguém mais dentro do assunto o corrija.

    Tudo de bom,

    Ozy
     
  3. Slowmottion

    Slowmottion Power Member

    Obrigado, isto é muita escrita a essa hora da manhã...

    Obrigado.

    Estou a gostar mais da ideia do "onclick", de uma função para abrir 2 link's.

    Não estou a ver como isso se faz, mas já tenho algo para procurar.
     
  4. SpEeDyGoNzAlEs

    SpEeDyGoNzAlEs Power Member

    Esta coisada interpreta scripts eheheh


    < script>
    f unction AbreDuas(uma, duas, frameum, framedois)
    {
    window.open(uma, frameum);
    window.open(duas, framedois);
    }
    < /script>

    onclick="javascript:AbreDuas('pag1.html', 'frameUM', 'pag2.html', 'frameDOIS');"

    Got it? :)
     
  5. Slowmottion

    Slowmottion Power Member

    Epa, obrigadão... é mesmo simples, obrigado
     

Partilhar esta Página