Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > de.comp.lang.javascript > #4800
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Newsgroups | de.comp.lang.javascript |
| Subject | Re: Gluecksrad |
| Date | 2016-11-16 18:29 +0100 |
| Organization | PointedEars Software (PES) |
| Message-ID | <10725728.O9o76ZdvQC@PointedEars.de> (permalink) |
| References | <o04r2k$i78$1@news.albasani.net> <o0fcmj$hji$1@news.albasani.net> <3307965.kQq0lBPeGt@PointedEars.de> <o0hf12$p81$1@news.albasani.net> <1a76ea3d-6da6-d368-78b5-3073fe844d07@arnowelzel.de> |
Arno Welzel wrote:
> <https://arnowelzel.de/wp/tools/teamspeak-serverstatus>
>
> Im Quelltext ab Zeile 146.
| <script type="text/javascript">
| /* <![CDATA[ */
Die zweite Zeile ist für XHTML sinnvoll, und dann auch nur nötig, wenn das
XHTML-Dokument mit einem XML-Medientyp ausgeliefert wird (was den XML-Parser
triggert) *und* der Inhalt des Elements Markup-Begrenzer wie “<” enthält; in
HTML5 ohne XHTML-Syntax (siehe Dein doctype und Dein “html”-Element) ist sie
unnötiger Unfug.
| function doUpdate() {
Die benutzerdefinierte Funktion sollte in einem eigenen Namespace definiert
werden, um Namenskollisionen zu vermeiden. Die einfachste Möglichkeit dafür
ist die Definition in einer unmittelbar aufgerufenen anonymen Funktion:
(function () {
function doUpdate ()
{
// …
}
…doUpdate…
}());
| try {
| req=new XMLHttpRequest();
| }
| catch(ms) {
| try {
| req=new ActiveXObject("Msxml2.XMLHTTP");
| }
| catch(nonms) {
| try {
| req=new
ActiveXObject("Microsoft.XMLHTTP");
| }
| catch (failed) {
| req = null;
| }
| }
| }
|
Es ist nicht sinnvoll, das XHR-Objekt für jeden Request neu zu erstellen;
es wird bei open() automatisch zurückgesetzt.
Deine Benennung der Exception-Variablen ist unüblich.
Auf MSXML2 zu testen ist in dieser massgeschneiderten Funktion unnötig, da
Du keine der zusätzlichen Features verwendest.
| if(req != null) {
| req.open("GET", "/tools/tss3/status.php?lang=de", true);
|
| req.onreadystatechange = function() {
| switch(req.readyState) {
| case 4:
| if(req.status==200)
| {
|
document.getElementById("stats").innerHTML = req.responseText;
| }
| setTimeout("doUpdate()", 5000);
| break;
|
| default:
| return false;
| break;
| }
| };
|
| req.setRequestHeader("Content-Type","application/x-www-
form-urlencoded");
| req.send(null);
| }
Die switch-Anweisung ist fehlerträchtig (“switch-case fall-through”) und
hier unnötig bis falsch.
Es sollte
var timeout;
// …
timeout = window.setTimeout(doUpdate, 5000);
heissen:
<https://developer.mozilla.org/de/docs/Web/API/WindowTimers/setTimeout#Passing_string_literals>
<https://de.wikipedia.org/wiki/Content_Security_Policy#Verbotene_Konstrukte_und_Alternativen>
window.clearTimeout(timeout) sollte dann onunload aufgerufen werden.
Der Aufruf von XHR::setRequestHeader() ist *so* (ungetestet) fehlerträchtig
und hier unnötig.
| ( function( $ ) {
| $(document).ready(function () {
| setTimeout("doUpdate()", 5000);
| });
| } )( jQuery );
Wenn Du jQuery verwendest (was hier unnötig erscheint), solltest Du auch
jQuery.ajax() verwenden statt einer eigenen Lösung:
<http://api.jquery.com/jQuery.ajax/>
*Nur* jQuery(document).ready(…) in einer anonymen Funktion aufzurufen ist
unnötig fehlerträchtig.
Empfohlen wird, statt jQuery(document).ready(function () { … }) einfach
jQuery(function () { … }) aufzurufen:
<http://api.jquery.com/ready/>
| /* ]]> */
Unfug, siehe oben.
| </script>
Das script-Element sollte sich im head-Element befinden, nicht innerhalb
eines div-Elements innerhalb eines article-Elements. Optimal werden
gemeinsam genutzte Teile per URI referenziert, wobei die referenzierte
Ressource minimiert ausgeliefert werden kann. Das async- und das defer-
Attribut können dann benutzt werden, um das Script erst dann zu laden,
wenn es benötigt wird.
--
PointedEars
FAQ: <http://PointedEars.de/faq> | SVN: <http://PointedEars.de/wsvn/>
Twitter: @PointedEars2 | ES Matrix: <http://PointedEars.de/es-matrix>
Please do not cc me. / Bitte keine Kopien per E-Mail.
Back to de.comp.lang.javascript | Previous | Next — Previous in thread | Next in thread | Find similar
Gluecksrad Klaus Ketelaer <spam@spambouncer.de> - 2016-11-11 17:19 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-11 19:52 +0100
Re: Gluecksrad Klaus Ketelaer <spam@spambouncer.de> - 2016-11-12 12:24 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-13 20:49 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-14 01:52 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-14 02:25 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-14 10:19 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-14 10:57 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-15 08:38 +0100
Re: Gluecksrad Klaus Ketelaer <spam@spambouncer.de> - 2016-11-15 00:41 +0100
Re: Gluecksrad Klaus Ketelaer <spam@spambouncer.de> - 2016-11-15 17:21 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-15 19:27 +0100
Re: Gluecksrad Klaus Ketelaer <spam@spambouncer.de> - 2016-11-16 12:13 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-16 12:37 +0100
Re: Gluecksrad "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-11-16 12:58 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-16 16:19 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-16 18:29 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-16 19:13 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-16 19:29 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-17 20:21 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-18 03:09 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-18 17:23 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-18 17:40 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-18 17:56 +0100
Re: Gluecksrad "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-11-18 18:19 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-18 19:14 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-18 20:06 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-19 10:04 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-18 19:06 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-18 20:16 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-19 10:22 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-18 21:45 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-19 10:38 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-19 10:56 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-19 11:48 +0100
Re: Gluecksrad Klaus Ketelaer <spam@spambouncer.de> - 2016-11-22 21:19 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-22 22:13 +0100
Re: Gluecksrad Klaus Ketelaer <spam@spambouncer.de> - 2016-11-23 01:08 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-23 01:21 +0100
Re: Gluecksrad "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2016-11-23 22:47 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-23 10:06 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-23 10:18 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-23 12:16 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-24 21:28 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-24 22:45 +0100
Re: Gluecksrad Arno Welzel <usenet@arnowelzel.de> - 2016-11-25 23:11 +0100
Re: Gluecksrad Klaus Ketelaer <spam@spambouncer.de> - 2016-11-23 16:41 +0100
Re: Gluecksrad Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-11-23 21:15 +0100
Re: Gluecksrad Klaus Ketelaer <spam@spambouncer.de> - 2016-11-23 15:41 +0100
Re: Gluecksrad "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-11-23 16:21 +0100
csiph-web