- Kostenloser SVG-Editor
- Kostenloser SVG-Viewer mit Vorlagen
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.
<!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>
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.
{
"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"]
}
start_url. Gängige Werte sind z.B.: nicht angeben, "." oder "/"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>
<!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>📂 Öffnen</label> <label>📁 Ordner</label> <label>💾 Diskette</label> </div> </body> </html>
DATA(lv_json) = |\{"name": "Horst","age":67,"city": "Berlin"\}|.
* STRING -> XSTRING
CALL TRANSFORMATION sjson2html SOURCE XML lv_json RESULT XML DATA(lv_html).
* Anzeige
cl_abap_browser=>show_html( html_string = cl_abap_codepage=>convert_from( lv_html ) ).
**********************************************************************
* 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.
* 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.
* 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.
* 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.