[HTML] Favicon auf einer Webseite einbinden

Favicons

Ein Favicon unterstützt die Wiedererkennung einer Website und erfüllt dabei aber wichtige Funktionen für Orientierung, Markenwirkung und Professionalität.
Favicons werden in Browser‑Tabs, Lesezeichen, der Adressleiste und im Browserverlauf angezeigt. Moderne Suchmaschinen zeigen Favicons auch in den mobilen Suchergebnissen an.
Grundsätzlich werden die Favicons im head-Teil der HTML-Seite eingebunden. Hierbei können verschiedene Typen von Favicons (Größen, Dateiformate) für unterschiedliche Plattformen berücksichtigt werden. Für Progressive Web App (PWA) gibt es noch eine modernere Form über die Einbindung einer manifest.json.

Einbindung

<!DOCTYPE html>
<html lang="de">
	<head>
		<meta charset="UTF-8"/>
		<title>Page title</title>
		<link rel="icon" href="./favicon.ico"/>
		<link rel="icon" type="image/png" sizes="96x96" href="./favicon-96x96.png"/>
		<link rel="icon" type="image/svg+xml" sizes="any" href="./favicon.svg"/>
		<link rel="apple-touch-icon" href="./apple-touch-icon.png"/>
		<link rel="manifest" href="./manifest.json"/>
	</head>
	<body>
	</body>
</html>

Links

[HTML] Manifest (manifest.json) zu einer Webseite hinzufügen

Progressive Web App (PWA)

Für die Nutzung von PWA‑Funktionen für eine Webseite ist ein Manifest in Form einer manifest.json sinnvoll. Die manifest.json teilt dem Browser mit, wie sich Ihre App verhalten soll, wenn sie auf einem Endgerät ausgeführt wird.

Beispiel

{
  "name": "Meine Webseite",
  "short_name": "MWS",
  "description": "Tolle Sachen zum Lesen",
  "start_url": ".",
  "display": "browser",
  "orientation": "any",
  "icons": [
    {
      "src": "/favicon.svg",
      "sizes": "any",
      "type": "image/svg+xml",
      "purpose": "any"
    },
    {
      "src": "/icon-192.png",
      "sizes": "192x192",
      "type": "image/png",
      "purpose": "any maskable"
    },
    {
      "src": "/icon-512.png",
      "sizes": "512x512",
      "type": "image/png",
      "purpose": "any maskable"
    }
  ],
  "categories": ["productivity", "utilities", "social"]
}

Tipps

  • Die Parameter sollten sorgfältig gesetzt werden, insbesondere der Parameter start_url. Gängige Werte sind z.B.: nicht angeben, "." oder "/"

Einbindung

Die manifest.json wird im der HTML-Seite eingebunden.

<!DOCTYPE html>
<html lang="de">
	<head>
		<meta charset="UTF-8"/>
		<title>Page title</title>
		<link rel="manifest" href="./manifest.json"/>
	</head>
	<body>
	</body>
</html>

Links

[HTML] Unicode‑Emojis in Texten verwenden

Einfügen von Emojis

Vorteile

  • schnell und ohne Bibliothek-Abhängigkeiten ein Symbol im Text einfügen

Nachteile

  • Darstellung variiert je nach Plattform
<!DOCTYPE html>
<html lang="de">
	<head>
		<meta charset="utf-8"/>
		<meta name="viewport" content="width=device-width,initial-scale=1"/>
		<title>Emoji Test</title>
	</head>
	<body>
		<div class="app">
			<label>&#x1f4c2; Öffnen</label>
			<label>&#x1f4c1; Ordner</label>
			<label>&#x1f4be; Diskette</label>
		</div>
	</body>
</html>

Links

[ABAP] ABAP-Listausgabe in HTML wandeln

**********************************************************************
* Testausgabe
**********************************************************************
* Farbe definieren
FORMAT COLOR COL_HEADING.
* Überschriftentext
WRITE: / |Testausgabe|.
* Leerzeichen am Zeilenende, damit der Farbbalken durchgezogen wird
WRITE AT sy-linsz space.
* Farbdefinition abschalten
FORMAT COLOR OFF.

WRITE: / 'Grün' COLOR COL_POSITIVE.
WRITE: / 'Rot' COLOR COL_NEGATIVE.

ULINE.

**********************************************************************
* Aufbereitung der Listausgabe für HTML
**********************************************************************
DATA: it_list TYPE STANDARD TABLE OF abaplist WITH DEFAULT KEY.

* Listausgabe in Form einer binären internen Tabelle speichern
* Sichern einer Liste
CALL FUNCTION 'SAVE_LIST'
  TABLES
    listobject         = it_list
  EXCEPTIONS
    list_index_invalid = 1
    OTHERS             = 2.

DATA: it_html TYPE STANDARD TABLE OF w3html.

* Listausgabe -> HTML
* Converts a given listobject to html
CALL FUNCTION 'WWW_HTML_FROM_LISTOBJECT'
  TABLES
    html          = it_html
    listobject    = it_list.

* HTML-Viewer
DATA(o_hv) = NEW cl_gui_html_viewer( parent = cl_gui_container=>default_screen ).
* URL holen
DATA: lv_url TYPE swk_url.

o_hv->load_data( IMPORTING
                   assigned_url = lv_url
                 CHANGING
                   data_table   = it_html ).

* HTML-Daten anzeigen
o_hv->show_url( url      = lv_url
                in_place = abap_false ).

* cl_gui_container=>default_screen erzwingen
WRITE: space.

[ABAP] ITS: HTML aus einem Dynpro generieren

* Paket: SITS_ABAP

* SE11 - Report
DATA: lv_prog TYPE d020s-prog VALUE 'SAPLSD_ENTRY'.
* Dynpro 1000
DATA: lv_dynnr TYPE d020s-dnum VALUE '1000'.
* '' / C - Classic, B - HTML-Business, W - WebGUI
DATA: lv_style TYPE w3style VALUE 'B'.

DATA: lv_html_xstr TYPE xstring.
DATA: it_html TYPE STANDARD TABLE OF w3html WITH DEFAULT KEY.

* Template von Dynpro generieren
CALL FUNCTION 'ITS_GENERATE_HTML_FROM_DYNPRO'
  EXPORTING
    progname                       = lv_prog
    dynnr                          = lv_dynnr
    style_2006                     = lv_style
  IMPORTING
    source_stream                  = lv_html_xstr
  TABLES
    meta_html                      = it_html
  EXCEPTIONS
    style_not_valid                = 1
    dynnr_or_programname_not_valid = 2
    css_not_valid                  = 3
    xsl_not_valid                  = 4
    placeholder_not_valid          = 5
    no_card_identifiers_used       = 6
    error_occured                  = 7
    OTHERS                         = 8.

IF sy-subrc = 0.
  cl_demo_output=>write_data( it_html ).
  DATA(lv_html) = cl_demo_output=>get( ).

* Daten im Inline-Browser im SAP-Fenster anzeigen
  cl_abap_browser=>show_html( EXPORTING
                                title        = 'HTML'
                                html_string  = lv_html
                                container    = cl_gui_container=>default_screen ).

* cl_gui_container=>default_screen erzwingen
  WRITE: space.
ENDIF.

[ABAP] RegEx: HTML-Tags aus String entfernen

* HTML
DATA(lv_html) = |<!DOCTYPE html>| &&
                |<html>| &&
                |<head>| &&
                |  <meta charset="utf-8">| &&
                |  <meta name="viewport" content="width=device-width">| &&
                |  <title>DOM Read</title>| &&
                |</head>| &&
                |<body>| &&
                |  <div id="bodytext"><b>Hallo Welt!</b></div>| &&
                |  <div id="bodytext">Weiterlesen: <a href="https://codezentrale.de">Link</a></div>| &&
                |</body>| &&
                |</html>|.

* Alle HTML-Tags finden
DATA(matcher) = cl_abap_matcher=>create( pattern     = '<([!A-Za-z][A-Za-z0-9]*)([^>]*)>|</([A-Za-z][A-Za-z0-9]*)>'
                                         text        = lv_html
                                         ignore_case = abap_true ).

* Alle gefundenen HTML-Tags mit '' ersetzen
IF matcher->replace_all( '' ) > 0.
  WRITE: / matcher->text.
ELSE.
  WRITE: / |Keine Tags gefunden.|.
ENDIF.

[ABAP] Konvertierung HTML-String nach HTML-itab

* Konvertierungsklasse HTML-String nach HTML-itab
CLASS lcl_html_str_to_itab DEFINITION FINAL.
  PUBLIC SECTION.

* Zeilenlänge für HTML-itab
    CONSTANTS: co_html_length TYPE i VALUE 1024.
* HTML-itab
    TYPES: ty_html_line TYPE c LENGTH co_html_length.
    TYPES: ty_it_html TYPE STANDARD TABLE OF ty_html_line WITH DEFAULT KEY.

    CLASS-METHODS:
      convert
        IMPORTING
                  i_html_str        TYPE string
        RETURNING VALUE(rv_it_html) TYPE ty_it_html.

ENDCLASS.

CLASS lcl_html_str_to_itab IMPLEMENTATION.
**********************************************************************
* Konvertiert HTML-String nach HTML-itab
**********************************************************************
* i_html_str -> HTML-String
* rv_it_html <- HTML-itab
**********************************************************************
  METHOD convert.

    DATA(lv_right) = i_html_str.

    WHILE strlen( lv_right ) >= co_html_length.
* linker Teil
      DATA(lv_left) = substring( val = lv_right off = 0 len = co_html_length ).
      APPEND lv_left TO rv_it_html.

* Rest
      lv_right = substring( val = lv_right off = co_html_length len = strlen( lv_right ) - co_html_length ).
    ENDWHILE.

* Rest anfügen
    IF strlen( lv_right ) > 0.
      APPEND lv_right TO rv_it_html.
    ENDIF.

  ENDMETHOD.

ENDCLASS.

START-OF-SELECTION.
* Daten holen
  SELECT * FROM tnapr INTO TABLE @DATA(it_tnapr).

* HTML-Daten aus itab generieren
  DATA(lv_html) = cl_demo_output=>get( it_tnapr ).

* HTML-String nach HTML itab konvertieren
  DATA(it_html) = lcl_html_str_to_itab=>convert( lv_html  ).

* HTML-Viewer
  DATA(o_hv) = NEW cl_gui_html_viewer( parent = cl_gui_container=>default_screen ).
* URL holen
  DATA: lv_url type swk_url.

  o_hv->load_data( IMPORTING
                     assigned_url = lv_url
                   CHANGING
                     data_table   = it_html ).

* Daten anzeigen
  o_hv->show_url( url      = lv_url
                  in_place = abap_true ). " im SAP-Fenster (abap_true) oder im Externen Browser (abap_false) anzeigen

* cl_gui_container=>default_screen erzwingen
  WRITE: space.