Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    14

    doctype con frameset e javascript

    Ciao a tutti!

    Ho un sito fatto a frames. Pagina principale è index.html
    Da quello che ho capito il doctype di quest'ultima è di tipo frameset:

    <!doctype html public "-//w3c//dtd html 4.01 frameset//en">

    MA

    tutte le interne comprese il menu sono di tipo transitional:

    <!doctype html public "-//w3c//dtd html 4.01 transitional//en"

    La mia domanda è:
    Nelle pagine: menu.html, pagina003.html ecc. se ho dei javascript che ricostruiscono la struttura a frames il doctype è sempre di tipo transitional?

    GRAZIE

  2. #2
    L'inserimento di script non influenza il doctype che citi, puoi tranquillamente usare il transitional.
    Il problema è un altro.
    Tu ricostruisci in un frameset un altro frameset?!?

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    14
    Grazie della risposta. Il doctype adesso è corretto

    Il sito ha una struttura molto semplice: index, poi un menu "head" e delle pagine "content".
    Ho messo il javascript sulle "content" per ricostruire tutta la struttura partendo da una sola pagina interna:

    if (self.name==top.name)
    {
    document.write('<frameset rows="80,*" framespacing="0" frameborder="0"> ')
    document.write('<frame name="head" src="../eng/head.html" scrolling="auto" marginwidth="0" noresize> ')
    document.write('<frame name="content" src='+document.location.href+'?a scrolling="auto" marginwidth="0" noresize>')
    document.write('</frameset>')
    }

    La pagina index viene validata e anche le altre

    MA...

    Unico neo nella pagina index non sono riuscito ad imporre il frameborder=0 w3c non me la valida! Ho provato ad inserire un javascript, questa volta per la index.html

    window.onload = function ()
    {
    var obj=document.getElementById('index');

    if (!obj) return;

    var attr1 = document.createAttribute('framespacing');
    var attr2 = document.createAttribute('frameborder');
    var attr3 = document.createAttribute('border');

    attr1.value = '0';
    attr2.value = '0';
    attr3.value = '0';
    obj.setAttributeNode(attr1);
    obj.setAttributeNode(attr2);
    obj.setAttributeNode(attr3);
    }

    ma non mi funziona.
    Io preferirei risolvere con i fogli di stile o con codice corretto, altrimenti anche un javascript corretto potrebbe andar bene.
    Ma sembra che non sono il primo ad avere lo stesso problema...

  4. #4
    Affermazioni come "W3C non me lo valida" mi lasciano sempre con l'amaro in bocca perchè in genere significa che qualcosa non è ben chiaro.
    Innanzitutto non capisco perchè ricostruire il DOM di un frameset quando puoi semplicemente ricorrere add un redirect
    codice:
    if(top.location!=location) {
    location=top.location;
    };
    Così eviti tutti i problemi.
    Inoltre ti consiglio comunque di utilizzare i CSS.
    Dando un ID al frame ed impostando border a 0 e margin e padding a 0 dovresti risolvere.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    14
    In effetti hai capito quello che stavo cercando.
    Mi bastava un css.
    Proverò a farne uno esterno con le tue indicazioni.
    Ti assicuro che per quanto ovvio (adesso che me lo dici) non l'avevo trovato in nessuna guida, che invece inserivano erroneamente:
    <frameset rows="80,*" framespacing="0" frameborder="0">

    Per quanto riguarda la struttura a frame quel javascript carica indipendentemente dalla pagina tutta la struttura ma ha il vantaggio di non portare alla pagina iniziale.
    E' utilissimo per i motori di ricerca che magari individuano una pagina interna e poi riescono a far vedere veramente la pagina cercata e non quella iniziale.

    L'ho trovato nella raccolte qui sul sito...

    Mi sei stato molto utile grazie!

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    14
    Ho inserito nella pagina index un file esterno .css con le tue indicazioni.
    Ma non funziona :-(
    Il bordo appare sempre...

    #index {
    border : 0;
    margin : 0;
    padding : 0;
    }

  7. #7
    L'attributo frameborder è un attributo valido dell'elemento frame. Credo tu l'abbia utilizzato in frameset e forse per questo non veniva validato il documento.

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    14
    Hai ragione: frameset non ha l'attributo frameborder valido.

    Ma a questa pagina:
    http://xhtml.html.it/guide/lezione/1...sualizzazione/
    c'è scritto:
    "L’attributo frameborder (di default impostato a “yes”) permette di specificare se nel frameset devono essere presenti i bordi."

    Ad esempio nel mio sito, ma puoi guardare anche questo: www.fineco.it, tutto funziona bene ma le pagine ovviamente non vengono validate.

    Ora io ho seguito il tuo consiglio:
    Ho fatto una pagina .css con degli ID sia per il frameset che per il frame.
    Poi per questi ID margin, padding e border = 0.
    Ma non funziona ancora, il bordo è ancora li...

    Sembra che per farlo sparire bisogna usare una sintassi sbagliata
    Premetto che mi interessa fare le cose per bene ;-)

    Grazie ancora!

  9. #9
    E ti credo!
    Come già detto frameborder è una proprietà di FRAME e non di FRAMESET!

    http://www.w3.org/TR/xhtml1/dtds.htm...TML-1.0-Strict
    dai un'occhiata al DTD.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.