Disabled Web Features

Though Chrome Apps use the web platform, some web features have been disabled or else are used in a different way. Mainly this is to avoid security issues and to improve programming practices. Below is a summary of the disabled features of the web platform and potential work-arounds:

DisabledWork-around
alertUse a custom lightbox/popup.
Browser chrome APIsN/A.
confirmUse a custom lightbox/popup.
document.cookiePackaged app pages are not rendered on the server, so there is no need to use these.
document.closeN/A.
document.openN/A.
document.writeUse document.createElement.
External resourcesUse the webview tag for iframes. See Embed Content and Webview Tag API. Video and audio are allowed to have non-local URLs.
FlashUse HTML5 Platform.
Form submissionUse JavaScript to process form content (listen for submit event, process data locally first before sending to server).
javascript: urlsYou cannot use bookmarklets for inline javascript on anchors. Use the traditional click handler instead.
localStorageUse IndexedDB or the Storage API (which also syncs to the cloud).
NavigationLinks open up with the system web browser. window.history and window.location are disabled.
Non-sandboxed pluginsN/A.
showModalDialogUse a custom lightbox/popup.
Synchronous XMLHttpRequestUse async-only XMLHttpRequest: Getting Rid of Synchrounous XXRs.
User Text selectionBy default, users can no longer select text like they can on a web page. To make areas of the app's text selectable, apply the CSS style, -webkit-user-select: text;.
webSqlUse IndexedDB or Filesystem API.