Widget.xml (e.g. stored as file resource): <iw:iwidget name="WidgetName" id="WidgetId" xmlns:iw="http://www.ibm.com/xmlns/prod/iWidget" iScope="xspScopeClass" allowInstanceContent="false" title="Widget Title" supportedModes="view fullpage"> <iw:resource uri="http://openntf.org/domjs/dojo-1.4.3/ibm/xsp/widget/layout/xspScopeClass.js"/> <iw:content mode="view"> <![CDATA[ <iframe id="_IWID_xspFrame_view" name="_IWID_xspFrame_view" frameborder="0" marginheight="0" marginwidth="0" width="100%" height="385" scrolling="no"></iframe> <script> var xspc__IWID_view={ xspComponentId: "_IWID_", xspMode: "view", xspProxyMode: "", xspRunningContext: "iWidget", _xspUrl: "http://openntf.org/Widgets.nsf/View.xsp" } </script> <form id="_IWID_xspForm_view" name="_IWID_xspForm_view" method="POST" target="_IWID_xspFrame_view" style="display:none"> <input type="hidden" name="xspComponentId" value=""> <input type="hidden" name="xspMode" value=""> <input type="hidden" name="xspProxyMode" value=""> <input type="hidden" name="xspProxyUrl" value=""> <input type="hidden" name="xspRunningContext" value=""> <input type="hidden" name="xspTimeZone" value=""> <input type="hidden" name="_xspUrl" value=""> <input type="hidden" name="xspParameters" value=""> </form> ]]> </iw:content> <iw:content mode="fullpage"> <![CDATA[ <iframe id="_IWID_xspFrame_view" name="_IWID_xspFrame_view" frameborder="0" marginheight="0" marginwidth="0" width="100%" scrolling="no"></iframe> <script> var xspc__IWID_view={ xspComponentId: "_IWID_", xspMode: "fullpage", xspProxyMode: "", xspRunningContext: "iWidget", _xspUrl: "http://www.openntf.org/Widgets.nsf/Fullpage.xsp" }; window.addEventListener( "message", function (event) { console.log('Received event: ', event.data); var xpageiFrame = document.getElementById("_IWID_xspFrame_view"); xpageiFrame.style.height = event.data; }, false); </script> <form id="_IWID_xspForm_view" name="_IWID_xspForm_view" method="POST" target="_IWID_xspFrame_view" style="display:none"> <input type="hidden" name="xspComponentId" value=""> <input type="hidden" name="xspMode" value=""> <input type="hidden" name="xspProxyMode" value=""> <input type="hidden" name="xspProxyUrl" value=""> <input type="hidden" name="xspRunningContext" value=""> <input type="hidden" name="xspTimeZone" value=""> <input type="hidden" name="_xspUrl" value=""> <input type="hidden" name="xspParameters" value=""> </form> ]]> </iw:content> </iw:iwidget> To be added to XPage: <?xml version="1.0" encoding="UTF-8"?> <xp:view xmlns:xp="http://www.ibm.com/xsp/core"> <!-- add your XPages code here --> <xp:scriptBlock type="text/javascript"> <xp:this.value> <![CDATA[ var sendEvent = function() { var height = document.body.scrollHeight; parent.postMessage(height + "px", "*"); }; window.onresize = function(){ sendEvent(); }; ]]> </xp:this.value> </xp:scriptBlock> <xp:eventHandler event="onClientLoad" submit="true" refreshMode="norefresh"> <xp:this.script> <![CDATA[ sendEvent(); setTimeout(sendEvent, 500); ]]> </xp:this.script> </xp:eventHandler> </xp:view> To be added in domjs/dojo-1.4.3/ibm/xsp/widget/layout/xspScopeClass.js: onfullpage: function sc_ov() { this.displayMode(this.iContext.constants.mode.VIEW); },