Skip to content

Instantly share code, notes, and snippets.

@jvanoostveen
Created June 19, 2012 13:36
Show Gist options
  • Save jvanoostveen/2954228 to your computer and use it in GitHub Desktop.
Save jvanoostveen/2954228 to your computer and use it in GitHub Desktop.
Viewport issue on iOS
package test.run;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.HeadElement;
import com.google.gwt.dom.client.MetaElement;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.RootPanel;
public class ViewportTestEntryPoint implements EntryPoint
{
private MetaElement mViewport = null;
private Button mStartButton = null;
@Override
public void onModuleLoad()
{
mStartButton = new Button();
mStartButton.setText("Click here");
mStartButton.getElement().getStyle().setFontSize(48, Unit.PX);
mStartButton.addClickHandler(new ClickHandler()
{
@Override
public void onClick(ClickEvent aEvent)
{
mStartButton.setEnabled(false);
Timer theTimer = new Timer()
{
@Override
public void run()
{
optimizeHostPage();
}
};
theTimer.schedule(1000);
}
});
RootPanel.get().add(mStartButton);
}
protected void optimizeHostPage()
{
// Disable window scrolling.
Window.enableScrolling(false);
// Change viewport settings.
if (mViewport == null) {
NodeList<Element> theMetaElements = Document.get().getElementsByTagName("meta");
for (int i = 0; i < theMetaElements.getLength(); i++) {
Element theElement = theMetaElements.getItem(i);
if (theElement.getAttribute("name").equalsIgnoreCase("viewport")) {
mViewport = MetaElement.as(theElement);
break;
}
}
if (mViewport == null) {
mViewport = Document.get().createMetaElement();
mViewport.setName("viewport");
}
}
mViewport.setContent("width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=yes");
getHeadElement().appendChild(mViewport);
}
protected HeadElement getHeadElement()
{
Element theElement = Document.get().getElementsByTagName("head").getItem(0);
assert theElement != null : "HTML Head element required";
HeadElement theHeadElement = HeadElement.as(theElement);
return theHeadElement;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment