package com.smartgwt.client.docs; /** * <h3>Don't Misuse Frames</h3> * Loading the Smart GWT framework into multiple frames or iframes within the same browser is not a supported * configuration, or more accurately, not a <i>supportable</i> configuration, for the following reasons: <ul> <li> each * additional frame multiplies the memory footprint and reduces speed <li> having multiple frames prevents drag and drop * between components in different frames <li> modality handling (eg modal dialogs) doesn't automatically take into account * multiple frames (consider tabbing order, nested modality and other issues, you'll see it's not realistic to provide * automatic cross-frame modality handling) <li> inter-frame communication triggers several browser bugs: memory leaks, * performance issues, intermittent crashes in some browsers, inconsistencies in basic JavaScript operators such as * "typeof", and problems with form focus handling in IE, among many other bugs </ul> None of these problems are specific * to Smart GWT. They happen with Ajax frameworks in general as well as other RIA technologies. This is why no successful * Ajax application has ever used the approach of double-loading a component framework into multiple frames. <P> The * recommended {@link com.smartgwt.client.docs.SmartArchitecture Smart GWT Architecture} involves loading as many Smart * GWT-based application views as possible in the first page load, then showing and hiding different views as the user * navigates through the application. <P> If, for whatever reason, you cannot follow the Smart GWT Architecture and must * load new Smart GWT-based views by contacting the server each time, use the {@link * com.smartgwt.client.widgets.ViewLoader} class to load new views, never frames. <P> Note that the use of IFrames is * appropriate in certain circumstances, including loading certain types of content within an {@link * com.smartgwt.client.widgets.HTMLFlow contentsType,HTMLFlow}. The only prohibited usage is loading the Smart GWT * framework into multiple frames within the same browser. */ public interface NoFrames { }