Zum Inhalt springen

Wo trage ich einen <noscript> Bereich ein?

Erstellt am 21. Juni 2011 · 3 Antworten · letzte Antwort am 5. Juli 2011

Tags: JavaScript & AJAX, Frage

mimii ·

N'Abend ins Forum,

ich habe ein jQuery UI Dialog auf meiner Startseite, der Texte aus zwei Contentelementen enthält. Das funktioniert auch fein, soweit Javascript im Browser aktiviert ist. Es gibt aber immer wieder User, die Javascript deaktivieren. Dann werden die Inhalte einfach unter die Homepage geschrieben, was nicht wirklich prickelnd aussieht.

Nun möchte ich für solche User ne Meldung ausgeben, dass sie Javascript deaktiviert haben und somit nicht alle Inhalte der Homepage sehen. Und der Text des Contentelements soll dann einfach nicht erscheinen.

Die Scripts habe ich so eingebaut.

[globalVar = TSFE:id=1]
page.includeCSS.file4 = fileadmin/jquery/css/smoothness/jquery-ui-1.8.13.custom.css
page.includeCSS.file4.media = screen
page.headerData.5 = TEXT
page.headerData.5.value = <script type="text/javascript" src="fileadmin/scripts/popup.js"></script>
page.headerData.6 = TEXT
page.headerData.6.value = <script type="text/javascript" src="fileadmin/jquery/js/jquery-ui-1.8.13.custom.min.js"></script>
[global]

Den Inhalt lade ich so in den Dialog

[globalVar = TSFE:id=1]
page.20 = COA
page.20 {
  10 = RECORDS
  10 {
    dontCheckPid = 1
    tables = tt_content
    source = tt_content_14
  }
  20 = RECORDS
  20 {
    dontCheckPid = 1
    tables = tt_content
    source = tt_content_16
  }
  wrap = <div id="info"> | </div>
}
[global]

Wo gebe ich nun den <noscript>Bereich an bzw. geht das mit <noscript> hier überhaupt?

Danke für ein bisschen Input und schönen Abend noch.
Gruß - mimii

mimii ·

N'Abend nochmal,

ich habe viel recherchiert, aber leider nichts passendes zum Thema gefunden. Wie krieg ich geregelt, dass das TS nur bei aktiviertem Javascript ausgeführt wird? Mein Versuch so

[globalVar = TSFE:id=1]
page.20 = COA
page.20 {
  5 = TEXT
  5.value = <script type="text/javascript">
  10 = RECORDS
  10 {
    dontCheckPid = 1
    tables = tt_content
    source = tt_content_14
  }
  20 = RECORDS
  20 {
    dontCheckPid = 1
    tables = tt_content
    source = tt_content_16
  }

  wrap = <div id="info"> | </div>
  25 = TEXT
  25.value = </script>
  30= HTML
  30.value = <noscript><p>Kein Javascript aktiviert</p></noscript>
}
[global]

geht so leider nicht. Muss ich vielleicht ne Browserweiche vorschalten?

Danke für n bisschen Hilfe und Gruß
mimii

Chrissli ·

Ist jetzt zwar nicht professionell aber setzt doch
den info-Container per CSS auf

#info { display: none; }

und lege eine Javascript-Function an die per onload gestartet wird und das wieder sichtbar macht.
( inhalt meiner scripts.js )

function init() {
  infofeld = null;
  infofeld = document.getElementById('info');
  if(infofeld != null) { infofeld.style.display = 'block'; }
}

Dann noch den head-code und Body-Tag im TS anpassen:

page.headerData.1 = TEXT
page.headerData.1.value = <script type="text/javascript" src="scripts.js"></script>
page.bodyTagCObject = TEXT
page.bodyTagCObject.value = <body onload="init()";>

Und den HTML-<noscript>-Bereich notierst du da wo du in brauchst, oder du machst das hier:

<html>
<head></head>
<body>
<div id="KEINSCRIPT">###NOSCRIPTTEXT###</div>
</body>
</html>

und erweiterst die init-Funktion so:

function init() {
  infofeld = null;
  skriptlos = null;
  infofeld = document.getElementById('info');
  scriptlos = document.getElementById('KEINSCRIPT');

  if(infofeld != null) { infofeld.style.display = 'block'; }  
  if(scriptlos != null) { scriptlos.style.display = 'none'; }
}

So kannst du einen Container nach belieben füllen der ausgeblendet wird, wenn JS aktiv ist.