Seite 1 von 1

[JavaScript/HTML] noscript

Verfasst: 29.04.2012, 15:12
von BeRsErKeR
Ich bastel gerade an einer kleinen Webseite. Ich nutze framesets (Asche auf mein Haupt) und möchte die Frames per Javascript abhängig von der Fenstergröße des Browsers positionieren. Das klappt ganz gut obwohl ich die script-Sektionen außerhalb von head und body, sondern direkt im html-Bereich definiere (siehe HTML-Code).

Nun funktioniert das ganze natürlich nur wenn JavaScript verfügbar ist. Daher habe ich eine noscript-Sektion eingefügt, in der das frameset einfach mit einer festen Anordnung eingefügt wird.

Mein Problem ist nun, dass der Inhalt von noscript scheinbar immer verarbeitet wird. Ob JavaScript nun aktiv ist oder nicht.

Code: Alles auswählen

<html>
<head>
<title>Blub</title>
<script language="javascript" type="text/javascript">
<!--
window.onresize = function(event) {
    location.href = location.href;
}
function getSize() {
    var myWidth = 0, myHeight = 0;
 
    if( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        myHeight = document.body.clientHeight;
    }
    return [ myWidth, myHeight ];
}
-->
</script>
<style type="text/css">
frame
{
	margin: 0 0 0 0;
	left: 0;
	top: 0;
	right: 0;
	bottom: 0;
}
</style>
</head>

<script language="javascript" type="text/javascript">
<!--
var size = getSize();
var width = (size[0] - 500) / 2;
document.writeln('<frameset framespacing="0" border="false" frameborder="0" cols="' + width + ',500,*">');
-->
</script>
<noscript><frameset framespacing="0" border="false" frameborder="0" cols="200,500,*"></noscript>
  <frame name="empty" src="empty.html" scrolling="no" />
  <frameset framespacing="0" border="false" frameborder="0" rows="240,*">
    <frame name="header" src="top.html" scrolling="no" />
    <frameset framespacing="0" border="false" frameborder="0" cols="*,120">
      <frame name="main" src="home.html" />
      <frame name="menu" src="menu.html" />
    </frameset>
  </frameset>
  <frame name="empty" src="empty.html" scrolling="no" />
</frameset>
</html>
Wenn ich beispielsweise in der Zeile mit noscript für die Eigenschaft cols des frameset einen Wert von "0,500,*" eingebe, dann wird der mittlere Frame IMMER ganz links angezeigt. Auch wenn JavaScript aktiv ist.

Nehme ich den Inhalt von noscript raus, dann geht es mit aktiviertem JavaScript wie gewünscht.

Aber auch das Aktivieren und Deaktivieren von JavaScript im Browser (ich nutze Firefox 11.0) zeigt eine Wirkung. Und zwar verändert sich die BREITE des mittleren Frames, die Position jedoch nicht.

Wenn es nun php-Code im noscript-Bereich wäre, würde ich es ja verstehen (darum drehen sich auch alle Fragen in dieser Richtung, die so bei Google auffindbar waren), aber das ist ganz normales HTML da drin.


Hat da jemand eine Idee? Ist es ein Browserbug? Hab ich was übersehen?

Re: [JavaScript/HTML] noscript

Verfasst: 29.04.2012, 22:32
von pUnkOuter
Laut selfhtml darf ein Frameset nur innerhalb der html tags vorkommen, also nicht in einem <noscript> tag: http://de.selfhtml.org/html/referenz/el ... m#frameset Vergleiche z.B. mit dem darunter stehenden h1, bei welchem das noscript tag explizit gelistet ist.

Re: [JavaScript/HTML] noscript

Verfasst: 30.04.2012, 09:58
von waigie
Das Problem hat pUnkOuter schon geklärt deswegen von mir nur eine kleine Anregung wie du es umgehen kannst.

Du kannst das Frameset immer mit der Default (noscript) Einstellung setzen und dann mit Hilfe von Javascript die Framegröße bei einem Event verändern. Jedoch scheinen die typischen Events die man dafür nutzen würde in einem Frameset nicht ausgelöst werden. Daher würde ich das aus einem der Frames heraus machen und mit parent.document.... arbeiten.

Re: [JavaScript/HTML] noscript

Verfasst: 30.04.2012, 11:45
von BeRsErKeR
Danke für die Hinweise. Ich glaube aus dem Frame heraus ist eine gute Idee. Die fixe größe benötige ich eh für das Banner im header-frame. Da kann ich das ganze in dieses frame auslagern. ;)