Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Frame senza bordi con validazione - Possibile?

    Salve a tutti, ho un problemino con un frame (che non posso evitare di usare).

    Ho fatto una ricerca, ma buio assoluto!!!

    Essendo non consentiti gli attributi frameborder, framespacing e border, per il tag frameset, esiste tramite css un modo per evitare che si vedano i bordi di un frame ed ottenere la validazione W3C (XHTML 1.0 Frameset)?

    Ho già provato così:
    codice:
    frameset
    {
    	border:none;
    	padding:0;
    	margin:0;
    }
    frame
    {
    	border:none;
    	padding:0;
    	margin:0;
    }
    ma il risultato è che sono unicamente riuscito a rendere flat il bordo, che di default con IE pare 3D, purtroppo non riesco a eliminare uno spazio bianco (non so se sia effettivamente bordo o spaziatura fra i frame).

    Consigli???

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ci sono due categorie file HTML implicati: quello che contiene il frameset e quelli che contengono le singole pagine.

    Il file del frameset DEVE avere DTD frameset, e in tale DTD puoi definire vari attributi, tra cui anche frameborder. Per il dettaglio degli attributi permessi nei vari tag, ti rimando ai reference, ad esempio http://www.w3schools.com/tags/default.asp .

    I file HTML delle singole pagine, probabilmente dovranno avere DTD Transitional, altrimenti non riesci a sfruttare le caratteristiche dei frame (nella DTD Strict non c'e` l'attributo target)

    Poi devi sistemare i CSS.
    Nel CSS relativo al file frameset devi definire bordi e margini, come nel tuo esempio. Ma devi anche definire i CSS per i tag <html> e <body>.

    Invece nei CSS dei file interni devi anzitutto e soprattutto definire bordi e margini per i tag <html> e <body>, che pure hanno le loro caratteristiche, e se non li vuoi devi definire a zero, per evitare che qualche browser li abbia di default.
    Poi per il resto di tag della pagina ti comporti come al solito.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  3. #3
    Grazie per la risposta, mi rendo conto di essere stato un po' generico e di avere quindi ottenuto una risposta generica!

    Il problema è un po' più complesso, lo descrivo in dettaglio:
    Il sito è www.giuseppequaro.com

    Non ho alcun tipo di problema con css e dtd in nessuna delle pagine, la struttura è organizzata come mostrato in una figura che allego in fondo.

    La pagina index.asp ha un dtd di tipo (XHTML 1.0 Frameset) e contiene due frame che puntano alla pagina player.asp (XHTML 1.0 STRICT) che sta sopra e inizialmente alla pagina home.asp (XHTML 1.0 STRICT) che sta sotto. Entrambe le pagine validano XHTML 1.0 strict e i CSS.

    Il problema del target nello strict l'ho risolto con l'ausilio di una variabile di sesione ASP con una tecnica del genere (in blue):

    codice:
    <frameset rows="24,*" id="est" framespacing="0" frameborder="no" border="0">
     	<frame name="player" src="player.asp" noresize="noresize" scrolling ="no"/>
    	<frame name="page" src="<%pagina%>" noresize="noresize" scrolling ="yes"/>
    	<noframes>
    	  <body onload="setTimeout('reindirizza()',5000);">
    	     Your browser don't support frames !!
    
    	     Your redirect should begin shortly. If it does not, try
                      HOME PAGE
    	  </body>
    	</noframes>
    </frameset>
    la variabile pagina contiene di volta in volta il riferimento alla pagina corrente quindi tutto risolto per il target.

    Il problema sta nella parte rossa del codice: senza quegli attributi non riesco a far scomparire il bordo (frameborder) e lo spazio fra i frame (framespacing).

    Per adesso gli attributi del tag sono inseriti nella pagina on-line, funzionano con tutti i browser, ma non riesco ad ottenere la validazione frameset con nessun DTD, perchè pare siano deprecati.

    La mia domanda precisa era quindi: come ottenere lo stesso effetto del codice in rosso senza usare tali attributi, ma con i CSS?

    Sono quasi tentato di lavorare con javascript e "sostituire il tag" lato client, ma mi sembra una soluzione troppo "sporca", mi sento quasi come se stessi "fregando" il validatore, ma se non c'è altro...
    Immagini allegate Immagini allegate

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ho dato un'occhiata.

    Le pagine interne non sono XHTML Strict. Sono solo dichiarate Strict.
    Ad esempio nella home.asp
    C'e` uno script nel file XHTML.
    Ci sono attributi di formattazione
    Hai fatto la formattazione tramite tabella, con cio` impedendo il normale utilizzo dei CSS.

    Il frame superiore non riesco a vederlo: contiene solo un oggetto flash, che io non visulizzo (e non c'e` niente di alternativo).

    Ci sono inoltre oggetti <script> che risiedono su server diversi, e che quindi non vegono presi in considerazione dal browser.

    Vedo anche alcuni tag vuoti: alcuni browser li ignorano completamente.

    Senza contare gli errori nell'inglese: fai meglio scrivere in Italiano, se sbagli il singolare con il plurale: ci fai una figura migliore.


    Comunque per sostituire gli attributi eliminati, come dicevo nel post precedente, devi agire sulle caratteristiche di html e body della pagina inserita nei vari frame.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Ci sei andato giù abbastanza pesante devo dire!

    Il frame superiore contiene solo un'elemento flash perche deve solo consentire di eseguire l'audio senza interruzioni fra una pagina e l'altra.

    Il contenuto, l'inglese di cui parli, non l'ho preparato io, mi è stato fornito.

    Le pagine interne certificano, fai un test sul validatore ad uno qualsiasi dei link diretti:

    www.giuseppequaro.com/home.asp
    www.giuseppequaro.com/bioit01.asp
    www.giuseppequaro.com/contatti.asp
    ....

    se il validatore segnala un errore riconoscerò il torto...

    I link a script esterni (credo ti riferisca a quello a fine di ogni pagina) sono richiesti dallo strumento Google Analytics per poter monitorare le pagine e vanno inseriti obbligatoriamente lì per specifica di google.

    Un altro link esterno (non a script) è al lettore flash con relativa playlist in formato xspf, il progetto è open-source per la riproduzione di mp3 con lettori flash. Sono stato costretto a pubblicarlo altrove in quanto il formato non è supportato dal server che ospita il sito.

    Il layout a tabelle son d'accordo che non vada più bene oggi, ma il sito è abbastanza complesso strutturalmente ed è stato sviluppato gratuitamente come mio primo lavoro dinamico, non me la son sentita di rismontarlo tutto.

    Le prove che mi hai detto di fare sull'html e sul body delle pagine interne l'avevo già fatto, senza risultato.

    Hai fatto la formattazione tramite tabella, con cio` impedendo il normale utilizzo dei CSS.
    Cosa vuol dire? Se uso le tabelle (magari vecchio stile di progettazione) impedisco l'uso dei CSS?

    Il frame superiore è gestito con javascript, si clicca sulla nota e si ingrandisce fino a 24 px, dopo un timeout di 5 sec si rinasconde.

    Il mio problema era semplicemente questo: http://forum.html.it/forum/showthrea...hreadid=748331 ma evidentemente dopo più di 2 anni nessuno lo ha ancora risolto.

    PS. Non credevo di essermi mostrato tanto aggressivo da meritare una così severa risposta.

  6. #6
    Grazie a tutti per l'interesse, non trovando altra soluzione, abbiamo dovuto scegliere la strada del javascript.

    Posto il codice per chiunque fosse interessato.

    Adesso anche la pagina index.asp passa la validazione come XHTML 1.0 Frameset

    codice:
    window.onload = function ()
    {
    	var obj=document.getElementById('id_frameset');
    		
    	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);
    }
    Se qualcuno conoscesse qualche soluzione alternativa testata che permetta di evitare l'uso di JS, mi farebbe molto piacere provarla.

  7. #7
    Ti scrivo in merito al messaggio che mi hai mandato. I frame non li uso, quindi non ho mai affrontato la loro rappresentazione tramite CSS.

    Non ho capito una cosa: il bordo lo vedi solo in IE o proprio non riesci a toglierlo in nessun browser?

  8. #8
    Grazie per la risposta, non ti avevo più disturbato credendo di avere già esagerato con il primo mess privato.

    Ho approfondito un po' è ho visto che il problema è comune e nessuno pare vi abbia trovato soluzione.

    Il bordo si riesce a togliere con l'attributo frameborder="0" imposto ai singoli frame anzichè a al frameset. Darlo ai frame è lecito, darlo al frameset deprecato...

    Il problema che pare irrisolvibile e sì, si verifica con tutti i browser, (ho provato Opera 9.10, FF 1.5, IE 6/7 e NS 8.1 tutti per Win) è quello dello spazio fra i frame: esiste l'attributo framespacing="0" per il frameset, ma è deprecato usando tutti i dtd frameset e non pare raggiungibile via CSS.

    Ho tamponato con javascript, assegnando gli attributi deprecati all'apertura da parte del client, il metodo non mi soddisfa, obiettivamente è una schifezza modificare la visualizzazione lato client, ma...

  9. #9
    Scusate se uppo questa discussione, ma se qualcuno ha trovato una pezza che fosse puramente HTML + CSS validabile senza usare javascript...

    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

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.