Google Chrome App: Webview-Verhalten

Bei der Recherche für ein Problem am<iframe> auf Chrome Extension, die<webview> in Chrome Apps sind mir aufgefallen und haben mich interessiert.

Also habe ich beschlossen, ein kleines Beispiel für das Thema zu machen, mit dem ich konfrontiert bin<iframe> und sehen, ob<webview> Lass es lösen. Soweit ich ein Chrome Dev - Video gesehen habe,webview wird in einem anderen Prozess als Ihrer App ausgeführt. Es hat nicht die gleichen Berechtigungen wie Ihre App. Ich gehe also davon aus, dass, wenn der Inhalt in einer bestimmten Art und Weise vom Haupt-Thread (App) getrennt abläuft, der Inhalt getrennt voneinander ausgeführt wird, ohne die App oder den anderen zu blockieren, falls einer von ihnen einen haben könnte Möglicherweise lange laufende js-Ausführung. Deshalb habe ich folgendes gemacht:

background.js
chrome.app.runtime.onLaunched.addListener(function() {
  // Tell your app what to launch and how.
  chrome.app.window.create('window.html', {
      width: 1800,
      height: 1000
  });
});
manifest.json
{
  // Required
  "name": "Hello World!",
  "version": "0.1",
  "manifest_version": 2,

  // Recommended
  "description": "My first packaged app.",
  "icons": { "16": "calculator-16.png", "128": "calculator-128.png" },
  // "default_locale": "en",

  // Pick one (or none) OF browser_action, page_action, theme, app 

  "app": {
    "background": {
      "scripts": [ "background.js" ]
    }
  },

  "minimum_chrome_version": "23",

  "permissions": [ "webview" ]

}
window.html
<!DOCTYPE html>
<html>
  <head>
  </head>
  <body>
    <div>Hello, world!</div>
    <webview id="wv1" style="width: 450px; height: 300px; border: 2px solid red" src="http://www.google.com"></webview>
    <webview id="wv2" style="width: 450px; height: 300px; border: 2px solid red" src="http://www.nytimes.com"></webview>
    <webview id="wv3" style="width: 450px; height: 300px; border: 2px solid red" src="http://www.stackoverflow.com"></webview>
    <webview id="wv4" style="width: 450px; height: 300px; border: 2px solid red" src="http://db.tt/FCCA7nuz"></webview>
  </body>
</html>

Drei dieser Webviews sind normale Webseiten, die erste ist nur ein Beispiel für eine lange laufende js-Datei, Sie können den Code einsehen oder ich kann ihn später zur Verfügung stellen. Wenn ich 4 Google Chrome-Browserfenster öffnen würde, die Adresse eingeben und die Eingabetaste drücken, wäre Folgendes zu beachten: 3 Seiten werden sofort geladen, und die andere Seite mit der langen js-Ausführung würde noch funktionieren.

Wenn ich dies in einer Webseite mache, um diese 4 Webseiten zu öffnen, werden alle anderen blockiert, da es sich um den gleichen Vorgang handelt, wenn 1 Seite aufgrund der Ausführung von js langsam / blockiert ist.

Mit der Chrome App habe ich nun etwas Interessantes und Seltsames am Verhalten bemerkt. Ich bemerke Folgendes:

Wenn ich nur die ersten 3 Webseiten lade, ist das Laden schnell und "zur gleichen Zeit" oder so erscheint es;Wenn ich alle Webseiten so lade, wie sie sind, sehe ich, dass die ersten drei Seiten geladen werden und die letzten, da die Ausführung lange dauert, und dann wird angezeigt (dies wäre das optimale Verhalten), da es sich um unterschiedliche Prozesse handelt, die sie nicht ausführen sollten Es hängt nicht davon ab, ob eine Webansicht langsam ist. Andere müssen warten.Wenn ich nun die dritte kommentiere, die App aktualisiere und ausführe, sehe ich keine Webansicht, bis die mit dem Longscript fertig ist. (warum passiert das?)Der obige Punkt ist zufällig, entweder geschieht er wie erwähnt oder nicht.Und zum Schluss fügen wir noch einen hinzu<webview id="wv5" style="width: 450px; height: 300px; border: 2px solid red" src="http://developer.chrome.com"></webview>, was für mich passieren wird, ist: die ersten drei werden geladen, die vierte wird ausgeführt und nachdem sie fertig sind und angezeigt werden, sehe ich die fünfte gerendert.

Meine Hauptfrage / mein Zweifel bezieht sich auf das Verhalten und da sie tatsächlich in einem separaten Prozess ausgeführt werden, warum hat es nicht das gleiche Verhalten wie ein Browserfenster, warum blockiert diese Webansicht das Arbeiten / Rendern der anderen, ist es beabsichtigt arbeiten wie es ist? Sollte ich eine Problemumgehung durchführen, um festzustellen, ob eine Webansicht nach einiger Zeit nicht fertig ist, um das Laden zu überspringen und andere zu laden, damit ich wieder zu den langsamen wechseln kann?

Danke im Voraus.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage