Marco Marsala
Marco Marsala

Reputation: 2462

How to detect in javascript if a Smart Banner App is currently displayed?

I want to detect in Javascript if a Smart App banner is currently displayed. I already inspected the DOM but there is no evidence of the banner.

Upvotes: 10

Views: 5271

Answers (3)

Kirk Hammett
Kirk Hammett

Reputation: 676

This is an old question, but maybe this will be useful to someone. I did this in a following way:

  1. Detected iOS user-agent;
  2. Used window.matchMedia to determine device type and orientation with media queries;
  3. Checked window.innerHeight

After my experiments I have following experimental window.innerHeight values for different devices with banner shown. You can find them below:

  • iPhone 6 Plus portrait: 544px;
  • iPhone 6 Plus landscape: 286px;
  • iPhone 6 portrait: 475px;
  • iPhone 6 landscape: 247px;
  • iPhone 5 & 5S portrait: 376px;
  • iPhone 5 & 5S landscape: 148px;
  • iPhone 2G, 3G, 4, 4S, iPod Touch generations 1-4 portrait: 288px;
  • iPhone 2G, 3G, 4, 4S, iPod Touch generations 1-4 landscape: 148px.

Hope this will help someone.

Upvotes: 6

jilykate
jilykate

Reputation: 6008

if you are using jquery:

hasSmartBanner = window.innerHeight !== $(window).innerHeight();

Upvotes: 2

dougwig
dougwig

Reputation: 616

While the Smart App Banner doesn't show up in the DOM, it does decrease the available height of the browser window by 84 pixels ( that's the number I got with IOS7 + iPhone5 ).

I'm going to use this decrease in window.innerHeight to determine if the SmartBanner is displayed.

( I'll need to determine if the user has iPhone4 or iPhone5 )

Mobile Safari does have other bits that affect the window.innerHeight but at most the bottom menu ( share, etc. ) and the larger address bar at the top decrease available height by 69 pixels ( again that's what I got via the Safari Web Inspector ).

Upvotes: 2

Related Questions