tag:forum.selfhtml.org,2005:/self browserweiche für alle IE mittel cgi? – SELFHTML-Forum 2020-09-18T09:37:25Z https://forum.selfhtml.org/self/2020/sep/15/browserweiche-fur-alle-ie-mittel-cgi/1775644#m1775644 michaah 2020-09-15T20:29:56Z 2020-09-15T20:29:56Z browserweiche für alle IE mittel cgi? <p>Ich weiß, ich habe das Thema schonmal angesprochen (conditional comments) aber da das wenig zufriedenstellend im Ergebnis war (lief ja auf @supports hacks hinaus) habe ich nochmals herumgegoogelt und bin auf das Uraltthema Browserweiche gestoßen, dort wurde als Alternative zu CC irgend ein CGI erwähnt.</p> <p>Meine Hoffnung ist nach wie vor den IEs ab IE9! die derzeitige Seite weiterhin vorsetzen zu können(die gibt es ja und funktioniert), und allen anderen eben die neue im responsive Design. Ich habe einfach keinen Nerv, so hilfsbereit und fähig <em>ihr</em> auch seid, dauernd nachzuprüfen welche Technik IE kompatibel, welche nicht, für welche eine spezielle Alternative besteht usw.</p> <p>Daher hier meine Bitte: Kann mir jemand beschreiben oder code zeigen wie man alle IEs abfängt und denen eine eigene Seite zeigt?</p> <p>Die traurige Wahrheit der aktuellen Besucherstatistik für September 2020 der Seite um die es geht besagt, dass in der Summe insgesamt 22% MSIE Browser benutzen, Edge unter 1%, IE9 20%, alle anderen IES im unter 1% Bereich. Allerdings fehlt in der Liste der IE10, d.h. dessen Nutzer wurden wohl dem IE9 zugeschlagen. Ob das technisch gerechtfertigt ist kann ich nicht beurteilen.</p> <p>Zwar war mir klar, dass der IE in der Schweiz noch recht verbreitet ist, aber das das derart durchschlägt hat mich eben fast von Stuhl gehauen.</p> <p>Daher: Ist mein Vorhaben irgendwie umzusetzten (eventuell auch auf die gefahr hin dasss das nur zu 95% klappt). Oder ein pop-up was nur bei IEs erscheint mit einen Link zur IE version .....oder ..oder</p> https://forum.selfhtml.org/self/2020/sep/15/browserweiche-fur-alle-ie-mittel-cgi/1775646#m1775646 Rolf B 2020-09-15T21:49:21Z 2020-09-15T21:49:21Z browserweiche für alle IE mittel cgi? <p>Hallo michaah,</p> <p>20% IE9? Das muss aber ein sehr spezielles Publikum sein, das auf Windows Vista oder irgendein uraltes Mobilwindows festgenagelt ist. Ab Win7 ist der IE11 verfügbar.</p> <p>Du kannst mit serverseitiger Software den Browser nicht erkennen. Oder nur begrenzt.</p> <p>Der Browser gibt Dir den sogenannten UserAgent String mit; das ist einer de Request Header. Den kannst Du in PHP auswerten und dementsprechend verzweigen. Ggf. bietet Dir auch der Webserver an, den UserAgent String auszuwerten und dementsprechend andere Ressourcen auszuliefern.</p> <p>Du kannst. <strong>ABER DU SOLLST NICHT</strong>. UserAgent-Analysen sind State of the Art der 2000er.</p> <p>Für meinen Chrome sieht es so aus:</p> <p>User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36</p> <p>Und für den IE11 auf meinem Win10 so:</p> <p>User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko</p> <p>Daran siehst Du schon, dass die Browser da eine Menge Zeugs reinschreiben, damit sie von UserAgent Abfragen möglichst vielseitig erkannt werden. Wie Mozilla wollen sie alle aussehen, wie Gecko auch, und Chrome erzählt noch eine Menge Märchen mehr. Unter anderem erzählen die Browser eigentlich auch viel zu viel. Was geht es einen Server an, ob ich Win10 verwende? Oder Chrome im 64-bit Modus laufen lasse?</p> <p>Opera hatte eine Funktion, den UserAgent String frei eintragen zu können, um sich unwilligen Servern gegenüber maskieren zu können.</p> <p>Das Bekloppteste beim IE ist: Man kann ihn ja in den Entwicklerwerkzeugen verdummen (noch weiter als er ohnehin schon ist) und eine frühere IE-Version zur Seitendarstellung auswählen. Ich habe mal IE9 ausgewählt. Und bekomme als UserAgent:</p> <p>User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko</p> <p>Soviel zu UserAgent Prüfungen für den IE9. Wenn dein Server dem IE9 was besonders Antikes liefern will, dann kannst Du das <strong>so</strong> nicht mal testen.</p> <p>Fazit: Das macht man nicht. Man verwendet clientseitige Feature Detection, um bestimmte Funktionen nur bei Vorhandensein zu nutzen. Oder Polyfills, um benötigte, aber fehlende Funktionen nachzurüsten.</p> <p>Wenn man Uraltbrowser unterstützen will, artet das echt in Arbeit aus. Besser, man unterstützt sie nicht, sondern toleriert sie. Die Seite muss - das ist dann Progressive Enhancement, nicht Responsive Design - so gebaut sein, dass sie auf einem Altbrowser nicht zertrümmert aussieht. Mit PE kannst Du sie für moderne Browser aufhübschen.</p> <p>Bei 20% IE9 sieht die Sache allerdings schon anders aus. So vielen Kunden mag man keine Primitivversion seiner Seite schicken. Kannst Du auf deiner modernen Seite nicht irgendwo einen Link "Vintage-Version dieser Seite" einblenden?</p> <p>Du musst dabei auch bedenken, dass Du dann zwei Versionen der Seite pflegen und testen musst. Willst Du Dir das antun? Oder ist die Vintage-Version eine konservierte Alt-Version?</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2020/sep/15/browserweiche-fur-alle-ie-mittel-cgi/1775649#m1775649 JürgenB https://www.j-berkemeier.de 2020-09-16T07:07:40Z 2020-09-16T08:58:20Z browserweiche für alle IE mittel cgi? <p>Hallo michaah,</p> <blockquote> <p>Die traurige Wahrheit der aktuellen Besucherstatistik für September 2020 der Seite um die es geht besagt, dass in der Summe insgesamt 22% MSIE Browser benutzen, Edge unter 1%, IE9 20%, alle anderen IES im unter 1% Bereich. Allerdings fehlt in der Liste der IE10, d.h. dessen Nutzer wurden wohl dem IE9 zugeschlagen. Ob das technisch gerechtfertigt ist kann ich nicht beurteilen.</p> </blockquote> <p>bist du sicher, dass die Statistik stimmt? Ich setze auf meinen Seiten das details-Element ein, das von IE und altem Edge nicht unterstützt wird. Für diese Browser habe ich einen Polyfill, der nur geladen wird, wenn er benötigt wird. Ich frage im Javascript ab, ob details untestützt wird. So habe ich meine eigene Statistik: ich zähle, wieviele Browser das Haupt-Script laden, und wieviele davon den Polyfill. Das sind bei mir 4%, Tendenz fallend. Diese Werte passen auch in etwa zu den Statistiken, die sonst so veröffentlicht werden. 20% IE9 würde ich äußerst kritisch hinterfragen.</p> <p>Zu deinem Problem: Setz auf der neuen Seite einen Link auf die alte, prüfe per Javascript, ob es sich um einen modernen Browser handelt, und versteck bei diesen den Link.</p> <p>Gruß<br> Jürgen</p> https://forum.selfhtml.org/self/2020/sep/15/browserweiche-fur-alle-ie-mittel-cgi/1775655#m1775655 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2020-09-16T09:31:13Z 2020-09-16T09:31:13Z browserweiche für alle IE mittel cgi? <p>@@Rolf B</p> <blockquote> <p>[…] den UserAgent String auszuwerten und dementsprechend andere Ressourcen auszuliefern.</p> <p>Du kannst. <strong>ABER DU SOLLST NICHT</strong>.</p> </blockquote> <p>Bis hierher uneingeschränkte Zustimmung.</p> <blockquote> <p>UserAgent-Analysen sind State of the Art der 2000er.</p> </blockquote> <p>Nö. <em lang="en">User agent sniffing</em> war nie <em lang="en">state of the art</em>.</p> <blockquote> <p>Daran siehst Du schon, dass die Browser da eine Menge Zeugs reinschreiben, damit sie von UserAgent Abfragen möglichst vielseitig erkannt werden.</p> </blockquote> <p>Immer wieder gern gelesen: <a href="http://www.alexander-stannigel.eu/posts/?post=useragent" rel="nofollow noopener noreferrer">Die Geschichte der User-Agent-Strings</a></p> <div class="signature">-- <br> <em>„Sag mir, wie Du Deine Maske trägst, und ich sage Dir, ob Du ein Idiot bist.“</em> —@Ann_Waeltin </div> https://forum.selfhtml.org/self/2020/sep/15/browserweiche-fur-alle-ie-mittel-cgi/1775671#m1775671 michaah 2020-09-17T20:46:23Z 2020-09-17T20:46:23Z browserweiche für alle IE mittel cgi? <p>... Oder ist die Vintage-Version eine konservierte Alt-Version?</p> <blockquote> <p><em>Rolf</em></p> </blockquote> <p>Exakt. Die gibt es ja bereits. Und daher habe ich 0,0 Interesse für diese IEs jedem fehlenden feature hinterher zu coden. Allein der Gedanke an das Testen sorgt bei mir für sich aufrollende Fingernägel.</p> <p>Ich habe mich nochmals mit den Serverstats beschäftigt. IE9 ist tatsächlich für alle Zeiträume der um Größenordnungen meist genutze IE-Browser. Ich konnte nun doch auch Stats für den IE10 finden. Die Zahlen für IE9 muß ich leicht korrigieren, aber das ändert nichts wesentliches, 15+% statt 20% . Ich hatte mich etwas im gewählten und angezeigten Zeitraum geirrt, so sind es für die 2 Wochen Sep. 2020 "nur" 15+% IE9, die anderen IEs und auch EDGE! im 1+%-igen Bereich.</p> <p>Wenn das über ein cgi-Script nicht für alle IEs in einen Aufwasch möglich ist werde ich per conCom die IE9er mit der alten Versin beliefern (da geht da ja noch), und die IE10/11 vernachlässigen wenn das mit der feature detection ausartet.</p> <p>Danke.</p> <p>Gruß</p> <p>M.</p> https://forum.selfhtml.org/self/2020/sep/15/browserweiche-fur-alle-ie-mittel-cgi/1775672#m1775672 michaah 2020-09-17T21:07:37Z 2020-09-17T21:07:37Z browserweiche für alle IE mittel cgi? <blockquote> <p>bist du sicher, dass die Statistik stimmt?</p> </blockquote> <p>Naja, ich habe sie nicht selbst gefälscht ;-)</p> <p>Die Seite wendet sich an Schweizer Publikum, dort an Erwachsene, und die mit vermutlich erhöhtem Anteil an älteren Menschen. Der IE ist, das sagen internationale Stats, in der Schweiz noch weiter verbreitet als z.B. hier in DE. So ergibt das schon Sinn. Dennoch war ich von den Zahlen dann überrascht ... weil ich mir die lange nicht mehr angeschaut hatte.</p> <p>...</p> <blockquote> <p>Zu deinem Problem: Setz auf der neuen Seite einen Link auf die alte, prüfe per Javascript, ob es sich um einen modernen Browser handelt, und versteck bei diesen den Link.</p> </blockquote> <p>Das allerdings nähert sich meiner Überlegung an. Ich wollte schon fragen ob es irgendeine Konstruktion gibt die die IEs so falsch darstellen, dass man damit einen Link eben für IEs einblenden kann Dein Vorschlag klingt eleganter. Nur habe ich von JS keine Ahnung und will mich damit eigentlich nicht befassen weil ich JS für die Seite an sich nicht brauche. Aber wenn sonst alle Stricke reißen, hast du vielleicht nen Link zu ner Art Beispielbaukasten dafür. Ich meine, dieser Trick wird ja sonst schonmal im Netz aufgetaucht sein ... insbesondere die Prüfung auf modernen vs. unmoderne Browser. Das wäre ja wieder das eigentliche Problem. Auch wenn sich meine Anfrage um IEs drehte, ich hätte nichts dagegen allen alten Browsern die alte Seite vorzusetzen, ganz im Gegenteil.</p> <p>Danke soweit</p> <p>Gruß</p> <p>Michael</p> https://forum.selfhtml.org/self/2020/sep/15/browserweiche-fur-alle-ie-mittel-cgi/1775657#m1775657 Rolf B 2020-09-16T11:55:29Z 2020-09-16T11:55:29Z browserweiche für alle IE mittel cgi? <p>Hallo Gunnar,</p> <blockquote> <p>Nö. User agent sniffing war nie state of the art.</p> </blockquote> <p>Dö. Dein verlinkter Artikel beschreibt genau das. Es ist schon eine Kunst, aus diesem Durcheinander etwas brauchbares herauszulesen.</p> <p>Aber mittlerweile ist die Kunst so modern geworden, dass sie keine mehr versteht, und darum wechselten die Kunstkonsumenten zum Feature Detecting, als LiveScript das Licht der Sonne erblickte und <a href="https://de.wikipedia.org/wiki/JavaScript" rel="nofollow noopener noreferrer">"Java" aufgebrannt</a> bekam, weil es die sonnigen Java Applets scripten sollte.</p> <p>Mittlerweile ist Java von Larrys Weissagungen verraten worden und kein Browser mag es mehr haben, aber LiveScript gibt's immer noch und wird seine Brandmarke nicht mehr los.</p> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2020/sep/15/browserweiche-fur-alle-ie-mittel-cgi/1775673#m1775673 Rolf B 2020-09-17T21:35:33Z 2020-09-17T21:35:33Z browserweiche für alle IE mittel cgi? <p>Hallo michaah,</p> <blockquote> <p>Ich wollte schon fragen ob es irgendeine Konstruktion gibt die die IEs so falsch darstellen, dass man damit einen Link eben für IEs einblenden kann</p> </blockquote> <p>Du kannst ein kleines Script machen, das prüft, ob bestimmte Features vorhanden sind. Zum Beispiel das fetch API. Das kennt kein IE.</p> <pre><code class="block language-js"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>window<span class="token punctuation">.</span>fetch<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// Internet Explorer</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">"LinkToIE"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>style<span class="token operator">=</span><span class="token string">"display:block;"</span> <span class="token punctuation">}</span> </code></pre> <p>Im HTML</p> <pre><code class="block"><div id="LinkToIE"> <!-- Markup für den Link zum IE --> </div> </code></pre> <p>Im CSS</p> <pre><code class="block language-css"><span class="token selector">#LinkToIE</span> <span class="token punctuation">{</span> <span class="token property">display</span><span class="token punctuation">:</span>none<span class="token punctuation">;</span> <span class="token comment">/* weitere nötige Eigenschaften */</span> <span class="token punctuation">}</span> </code></pre> <p><em>Rolf</em></p> <div class="signature">-- <br> sumpsi - posui - obstruxi </div> https://forum.selfhtml.org/self/2020/sep/15/browserweiche-fur-alle-ie-mittel-cgi/1775678#m1775678 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2020-09-18T07:44:42Z 2020-09-18T07:44:42Z browserweiche für alle IE mittel cgi? <p>@@Rolf B</p> <blockquote> <pre><code class="block language-js"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>window<span class="token punctuation">.</span>fetch<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// Internet Explorer</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">"LinkToIE"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>style<span class="token operator">=</span><span class="token string">"display:block;"</span> <span class="token punctuation">}</span> </code></pre> <p>Im HTML</p> <pre><code class="block"><div id="LinkToIE"> <!-- Markup für den Link zum IE --> </div> </code></pre> <p>Im CSS</p> <pre><code class="block language-css"><span class="token selector">#LinkToIE</span> <span class="token punctuation">{</span> <span class="token property">display</span><span class="token punctuation">:</span>none<span class="token punctuation">;</span> <span class="token comment">/* weitere nötige Eigenschaften */</span> <span class="token punctuation">}</span> </code></pre> </blockquote> <p>Um da <a href="https://forum.selfhtml.org/cites/1711" rel="noopener noreferrer">nicht mit <code>style</code> in JavaScript rumzupfuschen</a>:</p> <pre><code class="block language-js"><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>window<span class="token punctuation">.</span>fetch<span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token comment">// Internet Explorer</span> document<span class="token punctuation">.</span><span class="token function">getElementById</span><span class="token punctuation">(</span><span class="token string">"LinkToIE"</span><span class="token punctuation">)</span><span class="token punctuation">.</span>hidden <span class="token operator">=</span> <span class="token boolean">false</span><span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p>Im HTML</p> <pre><code class="block"><div id="LinkToIE" hidden=""> <!-- Markup für den Link zum IE --> </div> </code></pre> <p>Im CSS</p> <pre><code class="block language-css"><span class="token selector">[hidden]</span> <span class="token punctuation">{</span> <span class="token property">display</span><span class="token punctuation">:</span>none<span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> <p> LLAP</p> <div class="signature">-- <br> <em>„Sag mir, wie Du Deine Maske trägst, und ich sage Dir, ob Du ein Idiot bist.“</em> —@Ann_Waeltin </div> https://forum.selfhtml.org/self/2020/sep/15/browserweiche-fur-alle-ie-mittel-cgi/1775680#m1775680 JürgenB https://www.j-berkemeier.de 2020-09-18T08:12:01Z 2020-09-18T08:12:01Z browserweiche für alle IE mittel cgi? <p>Hallo Gunnar,</p> <blockquote> <p>Im CSS</p> <pre><code class="block language-css"><span class="token selector">[hidden]</span> <span class="token punctuation">{</span> <span class="token property">display</span><span class="token punctuation">:</span>none<span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> </blockquote> <p>und das kann in diesem Fall sogar entfallen, da die Browser, die kein <code>hidden</code> kennen (IE 10 und älter) ja den Link sehen sollen. </p> <p>Gruß<br> Jürgen</p> https://forum.selfhtml.org/self/2020/sep/15/browserweiche-fur-alle-ie-mittel-cgi/1775681#m1775681 Gunnar Bittersmann selfhtml@bittersmann.de https://bittersmann.de 2020-09-18T08:42:53Z 2020-09-18T08:42:53Z browserweiche für alle IE mittel cgi? <p>@@JürgenB</p> <blockquote> <blockquote> <p>Im CSS</p> <pre><code class="block language-css"><span class="token selector">[hidden]</span> <span class="token punctuation">{</span> <span class="token property">display</span><span class="token punctuation">:</span>none<span class="token punctuation">;</span> <span class="token punctuation">}</span> </code></pre> </blockquote> <p>und das kann in diesem Fall sogar entfallen, da die Browser, die kein <code>hidden</code> kennen (IE 10 und älter) ja den Link sehen sollen. </p> </blockquote> <p>Dann kann auch das JavaScript entfallen. Als Browserweiche dann nicht <code class="language-js">window<span class="token punctuation">.</span>fetch</code>, sondern das <code>hidden</code>-Attribut.</p> <p>Hm, das fällt einem auf die Füße, wenn man <code>hidden</code> noch anderswo einsetzt.</p> <p> LLAP</p> <div class="signature">-- <br> <em>„Sag mir, wie Du Deine Maske trägst, und ich sage Dir, ob Du ein Idiot bist.“</em> —@Ann_Waeltin </div> https://forum.selfhtml.org/self/2020/sep/15/browserweiche-fur-alle-ie-mittel-cgi/1775682#m1775682 michaah 2020-09-18T09:37:25Z 2020-09-18T09:37:25Z browserweiche für alle IE mittel cgi? <p>...</p> <blockquote> <p>Dann kann auch das JavaScript entfallen. Als Browserweiche dann nicht <code class="language-js">window<span class="token punctuation">.</span>fetch</code>, sondern das <code>hidden</code>-Attribut.</p> </blockquote> <p>Ich war schon froh, das obige JS Beispiel gedanklich durchdringen zu können (ohne wirklich Ahnung von JS zu haben). Hört sich sehr nach Vorschlaghammer an, ist aber wohl wonach ich gefragt hatte. Auf jeden Fall ne Lösung wenn der IE Frust anhält. Danke dafür.</p> <p>Wenn es aber sogar ohne JS ginge würde ich mich auch nicht beschweren.</p> <blockquote> <p>Hm, das fällt einem auf die Füße, wenn man <code>hidden</code> noch anderswo einsetzt.</p> </blockquote> <p>Bislang verwende ich "hidden" nicht, in der derzeitigen, zukünftig alten Seite (dann nur für den IE) also ganz sicher nicht. Und in der neuen nur dann wenn ich hidden bei einem geplanten Akkordeon irgendwie brauche, das überblicke ich derzeit noch nicht. Aber gut, dann müsste ich eben in den sauren Apfel beißen und mir ein paar JS Kenntnisse reinpfeifen ...</p> <p>Es mildert aber schon mal meine IE Allergie hier Lösungsansätze vorgestellt zu bekommen wie man den IE möglichst simpel abfertigt ....</p> <p>Nochmals mercie!</p>