Interface NoFrames


public interface NoFrames

Don't Misuse Frames

Loading the Smart GWT framework into multiple frames or iframes within the same browser is not a supported configuration, or more accurately, not a supportable configuration, for the following reasons:
  • each additional frame multiplies the memory footprint and reduces speed
  • having multiple frames prevents drag and drop between components in different frames
  • 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)
  • 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
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.

The recommended 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.

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 ViewLoader class to load new views, never frames.

Note that the use of IFrames is appropriate in certain circumstances, including loading certain types of content within an contentsType,HTMLFlow. The only prohibited usage is loading the Smart GWT framework into multiple frames within the same browser.