iframe与UserControl的比较:
1、在加载数据量小的时候,两者无明显差异,无论同步加载还是异步加载
2、iframe本身加载内容不影响主页面的可操作性,而UserControl不用Ajax则需要加载完成才能操作主页面
3、iframe也可以使用延迟加载,触发事件来设置iframe的src属性。UserControl使用Ajax实现延迟加载。
4、面对大数据量问题,两者加载速度没有明显差异,但是外层DIV的display速度上有差异。用iframe控制显隐很流畅,而UserControl则有所延迟。
5、部分浏览器的对Iframe的支持不是很好,如果不想让其出现滚动条,需要自己写js控制。
下面附一小段代码:
function iframeAutoSize(iframeId) {
if (document.getElementById) {
//自动调整iframe高度
var iframe = document.getElementById(iframeId);
if (iframe && !window.opera) {
iframe.style.display = "block";
if (iframe.contentDocument && iframe.contentDocument.body.offsetHeight) {
//如果用户的浏览器是IE
var contentDocHeight = iframe.contentDocument.body.offsetHeight;
iframe.height = contentDocHeight;
}
else if (iframe.Document && iframe.Document.body.scrollHeight) {
//其它浏览器
iframe.height = iframe.Document.body.scrollHeight;
}
}
}
//根据设定的参数来处理不支持iframe的浏览器的显示问题
if (document.all || document.getElementById) {
var tempobj = document.all ? document.all[iframeId] : document.getElementById(iframeId);
tempobj.style.display = "block";
}
}
6、iframe父页面与子页面间的交互不如UserControl灵活,但是使用UserControl要保证多个UserControl中的HTML控件id和js方法名和全局变量名称要唯一。