Wie füge ich eine Desktop-Verknüpfung für die URL hinzu und ignoriere das Web-App-Manifest?

Ziel: Erstellen Sie eine Desktop-Verknüpfung, die https://news.google.com/news/i#0 öffnet , wobei das darin enthaltene Web-App-Manifest ignoriert wird, das andernfalls die gespeicherte Verknüpfung zu http://news.google.com/news „überschreibt“. ?sapa=1 und mit "display": "standalone".

Ich hatte dies zuvor auf einem älteren Android-Telefon vor einem Austausch / Upgrade.

Vor dem Upgrade konnte ich lange auf einzelne Artikel drücken und diese in neuen Tabs öffnen – sowie Linkverknüpfungen zu bestimmten Artikeln kopieren, ebenso wie alle anderen Features und Funktionen, die Chrome zu bieten hat. Hier ist nur eine Teilauswahl von Referenzen anderer Benutzer, die sich darüber beschweren:

Die Verwendung von https://news.google.com/news/i#0 bietet eine vorübergehende erfolgreiche Problemumgehung. Ich kann jedoch keinen erfolgreichen Weg finden, einen Link dafür zu meinem Startbildschirm hinzuzufügen. Die Option „Zum Startbildschirm hinzufügen“ in Chrome speichert stattdessen einen Link zu http://news.google.com/news?sapa=1 – und zwar so, dass er als Webanwendung statt als Webseite in Chrome geöffnet wird :

Auf einem Desktop-Betriebssystem wäre dies kein Problem. (Verknüpfung erstellen, gewünschte URL eingeben, fertig.)

Versuch 1: Eigenes Manifest bereitstellen

Also habe ich mein eigenes Manifest erstellt und https://news.google.com/news/ui/resources/json/manifest.json bearbeitet , um das start_urlAttribut in https://news.google.com/news/i#0und das displayAttribut von standalonein zu ändern browser. Ich habe dann meine eigene HTML-Seite erstellt, die einfach das Folgende enthielt - und dann beides selbst auf einem lokalen Webserver gehostet:

<html>
        <head>
                <Title>Google News</Title>
                <link rel="manifest" href="/news/manifest.json"/>
        </head>
        <body>
                Test
        </body>
</html>

Dies funktioniert jedoch nicht: Obwohl die Verknüpfung mit dem gewünschten Namen und Symbol gespeichert ist, verweist sie auf meine selbst gehostete HTML-Seite und nicht auf die angegebene start_url. Leider scheint es, dass domänenübergreifende URLs gemäß der manifesten Absicht nicht zulässig sind – gemäß https://github.com/w3c/manifest/issues/183 und https://github.com/w3c/manifest/issues/196 .

Versuch 1b: MITM-Website

Innerhalb der Grenzen meines eigenen lokalen Netzwerks dachte ich, ich könnte versuchen, die Website per Man-in-the-Middle (MITM) zu manipulieren, um vorübergehend ein gewünschtes Manfiest zur Ergänzung des Startbildschirms bereitzustellen. Leider verwendet die Website hier HSTS , was den Versuch entsprechend blockiert.

Unabhängig davon - das ist viel zu viel Arbeit für das, was eine einfache Anstrengung sein sollte.

Versuch 2: Widget-Lesezeichen

Leider sieht es so aus, als ob das 1x1-Lesezeichen-Widget in Chrome 48 gemäß https://productforums.google.com/forum/#!topic/chrome/Ikn2YhvT98s entfernt wurde . Die vorgeschlagene Problemumgehung besteht darin, die Funktion „Zum Startbildschirm hinzufügen“ in Chrome zu verwenden. Gehe zu 10 / siehe Anfang.

Versuch 3: Verwenden Sie den standardmäßig bereitgestellten „Internet“-Browser

Leider führt die Verwendung von „Verknüpfung zum Startbildschirm hinzufügen“ im standardmäßig bereitgestellten „Internet“-Browser zu demselben Ergebnis wie Chrome.

Überlegung 4: Verwenden Sie eine benutzerdefinierte App / ein benutzerdefiniertes Widget

Könnte wahrscheinlich eine benutzerdefinierte Anwendung oder ein Widget schreiben und installieren, das zum Startbildschirm hinzugefügt werden könnte, um das Ziel zu erreichen.

Oder erfinden Sie das Rad nicht neu und verwenden Sie ein vorhandenes. Einige Möglichkeiten:

Abschluss

Wie kann jemand eine Desktop-Verknüpfung zu einer beliebigen URL erstellen und dabei ein bereitgestelltes Web-App-Manifest ignorieren?

Antworten (1)

So umgehen Sie das Web-App-Manifest einer beliebigen Website

  1. Kopieren Sie den folgenden Code

    JavaScriptx:<!-- NOTE: JavaScriptx is NOT A TYPO!!! -->
    if (meta=document.querySelector('meta[name="mobile-web-app-capable"]')) meta.parentNode.removeChild(meta);
    if (mani=document.querySelector('link[rel="manifest"]')) mani.parentNode.removeChild(mani);
    void(0)
    
  2. Öffnen Sie Chrome auf Android

  3. Gehen Sie zu der URL, die Sie Ihrem Startbildschirm hinzufügen möchten, zum Beispiel:

  4. Fügen Sie den zuvor kopierten Code in die Standortleiste von Chrome ein

  5. Scrollen Sie zum Anfang des eingefügten Codes

    • (Berühren und ziehen Sie den Text wiederholt in der Adressleiste, um ihn zu scrollen
  6. Berühren Sie nach dem xinJavaScriptx

  7. Führen Sie die Rücktaste aus x, indem Sie verwenden, wie auch immer Ihre BackspaceSchaltfläche auf der Bildschirmtastatur aussieht

  8. Berühren Sie Goauf der Bildschirmtastatur (um die URL zu bestätigen/akzeptieren und auszuführen)

Das JavaScript sollte auf der Seite ausgeführt werden und nichts zu tun scheinen, das ist in Ordnung.

Hinweis: Wenn die Seite aus irgendeinem Grund neu geladen wird , müssen Sie das JavaScript erneut ausführen.

Versuchen Sie nun, diese Seite erneut zum Startbildschirm hinzuzufügen.

Zum Hinzufügen der URL zum Startbildschirm

  1. Berühren Sie das „3-Punkte-Menü“ von Chrome auf dem Bildschirm (rechts neben der Adressleiste, neben der Schaltfläche „Anzahl der Tabs öffnen“) oder verwenden Sie die Hardwaremenü-Schaltfläche
  2. Berühren Sie Zum Startbildschirm hinzufügen

Es sollte als normaler Chrome-Link enden, nicht als Web-App, da das JavaScript die Präferenz der Seite für den "Web-App-Modus" zerstört hat.

Fragen / Kommentare?

Warum hast du mich kopieren lassen JavaScriptx, damit ich später das x zurücksetzen kann?

JavaScript:Denn bei meinen Tests auf meinem Telefon hat Chrome diesen Teil abgerissen, als ich am Anfang irgendetwas mit eingefügt habe , und nur den Text danach hinterlassen.