Was macht dieser Kommentar /*@cc_on!@*/0 in einer if-Anweisung in Javascript?

Lesezeit: 2 Minuten

Benutzer-Avatar
Tonix

Nur eine kleine Frage zu diesem Kommentar, den ich in einem E-Book über HTML5 gefunden habe:
/*@cc_on!@*/0 Dieser Kommentar sollte irgendwie an die Erkennung des IE-Browsers gebunden sein, um document.createElement() zu verwenden, um die nicht erkannten HTML5-Elemente zu erstellen, aber ich habe keine nützlichen Informationen darüber gefunden, wie dies funktioniert, da selbst der Autor dies tut erkläre es nicht. Kann mir bitte jemand erklären was das ist und was es macht?

Danke für ihre Aufmerksamkeit!

BEARBEITEN:

im ebook sagt der autor:

Das nächste Beispiel zeigt, wie das Problem für alle neuen Elemente gelöst werden kann, die in HTML5 eingeführt wurden. Hier fügen wir alle Elemente ein, zu deren Erkennung wir den IE zwingen möchten:

Und hier ist der Code:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <title>Styling Unknown Elements - 3</title>
    <script>
        (function() {
            if (! /*@cc_on!@*/ 0)
                return;

            var e = "abbr,article,aside,audio,canvas,  datalist,details,eventsource,figure,footer,header,hgroup,mark,menu,meter,nav,output, progress,section,time,video".split(','),
                i = e.length;
            while (i--) {
                document.createElement(e[i]);

            }
        })()
    </script>
    <style>
        time {
            font-style: italic;
        }
    </style>
      ...

Entschuldigung für die schreckliche Einrückung, aber ich benutze ein Tablet. Wie auch immer, werfen Sie bitte einen Blick auf das script-Tag und auf diese if-Bedingung.

Benutzer-Avatar
alessandro

@cc_on-Anweisung ist das Flag für die bedingte Kompilierung IE(< 11) Browser

Zitat aus MSDN

@cc_on-Anweisung (JavaScript)

Aktiviert die Unterstützung für bedingte Kompilierung in Kommentaren in einem Skript.

Vorsicht

Die bedingte Kompilierung wird im Standardmodus von Internet Explorer 11 und in Windows Store-Apps nicht unterstützt. Die bedingte Kompilierung wird im Standardmodus von Internet Explorer 10 und in allen früheren Versionen unterstützt.

/*@cc_on @*/
/*@
    document.write("JavaScript version: " + @_jscript_version + ".");
    document.write("<br />");
    @if (@_win32)
        document.write("Running on the 32-bit version of Windows.");
    @elif (@_win16)
        document.write("Running on the 16-bit version of Windows.");
    @else
        document.write("Running on a different operating system.");
    @end
@*/

Also

if(!/*@cc_on!@*/0)

Wenn Ihr Browser keine bedingte Kompilierung kennt (außer IE < 11), lautet der Ausdruck:

if(!0) // ==> TRUE

sonst wird es sein:

if(!!0) // ==> FALSE

  • Danke für die Antwort, aber die Anweisung zur bedingten Kompilierung ist in meinem Fall etwas anders, könnten Sie mir bitte erklären, warum es eine gibt !@ nach dem @cc_on und was ist das 0 nach dem */ Kommentarabschluss?

    – Tonix

    29. Juni 2014 um 7:44 Uhr

  • nur eine andere Frage: in dem von Ihnen geposteten Codebeispiel der ganze Code innerhalb des Kommentars, der in Zeile 2 beginnt, dh “/*@” wird nur von anderen IE-Versionen als 11 kompiliert, zB 8, 7, habe ich Recht?

    – Tonix

    29. Juni 2014 um 17:19 Uhr

1085590cookie-checkWas macht dieser Kommentar /*@cc_on!@*/0 in einer if-Anweisung in Javascript?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy