Mark Vayngrib
Mark Vayngrib

Reputation: 994

How to detect in JavaScript if a page was loaded in a Chrome webview?

I'm writing a packaged app for Chrome that has a webview tag where I load my website.

Is it possible for the website JavaScript code to detect that it was loaded in a webview? The navigator.userAgent property has no clues.

Upvotes: 5

Views: 2131

Answers (2)

sowbug
sowbug

Reputation: 4672

Other approaches in addition to the one mentioned by Jivings:

  • Load a slightly different URL in the webview, e.g., http://example.com?in_webview=1, and reflect that in the JavaScript served by the site.
  • Same idea but use a #fragment. I don't know for sure whether a #fragment will work correctly, but it if does, it's nice because the server won't get confused by a strange query param.
  • Using the embedder, insert a script into the webview's DOM that does something different.

Upvotes: 3

Jivings
Jivings

Reputation: 23260

When the webview has finished loading fire an event to the page inside:

webview.addEventListener("loadstop", function () {
   contentWindow.postMessage('Hello from Chrome App!', targetOrigin)
});

Your content page can listen for this message using the regular postMessage API. If it receives a message you will know it is loaded in a webview.

Upvotes: 0

Related Questions