最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

jqueryajax应用中iframe自适应高度问题解决方法_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 21:21:53
文档

jqueryajax应用中iframe自适应高度问题解决方法_javascript技巧

jqueryajax应用中iframe自适应高度问题解决方法_javascript技巧:iframe自适应高度本身是很简单的方法,就是在页面加载完成后,重新计算一下高度即可。 代码如下: 代码如下://公共方法:设置iframe的高度以保证全部显示数据//function SetPageHeight() {// var iframe = getUrlParam('ifname')
推荐度:
导读jqueryajax应用中iframe自适应高度问题解决方法_javascript技巧:iframe自适应高度本身是很简单的方法,就是在页面加载完成后,重新计算一下高度即可。 代码如下: 代码如下://公共方法:设置iframe的高度以保证全部显示数据//function SetPageHeight() {// var iframe = getUrlParam('ifname')

iframe自适应高度本身是很简单的方法,就是在页面加载完成后,重新计算一下高度即可。

代码如下:
代码如下:
//公共方法:设置iframe的高度以保证全部显示数据
//function SetPageHeight() {
// var iframe = getUrlParam('ifname');
// var myiframe = window.parent.document.getElementById(iframe);
// iframeLoaded(myiframe);
//}
var iframeLoaded = function (iframe) {
if (iframe.src.length > 0) {
if (!iframe.readyState || iframe.readyState == "complete") {
var bHeight =
iframe.contentWindow.document.body.scrollHeight;
var dHeight =
iframe.contentWindow.document.documentElement.scrollHeight;
var height = Math.max(bHeight, dHeight);
iframe.height = height;
}
}
}
//分页时重新设置 iframe 高度 ; 修改后:iframe.name = iframe.id
var reSetIframeHeight = function()
{
try {
var oIframe = parent.document.getElementById(window.name);
oIframe.height = 100;
iframeLoaded(oIframe);
}
catch (err)
{
try {
parent.document.getElementById(window.name).height = 1000;
} catch (err2) { }
}
}
调用reSetIframeHeight();方法即可。

但是还有一种情况就是使用jquery ajax请求数据,数据都是在body load完成后,还在进行http请求,这时候没有数据占据窗口高度,reSetIframeHeight方法无法计算出来高度。

这时候,我们想到一个方法:ajax什么时候能够执行完成,当然是Complete事件是执行完成。

但是我们也不能在每一个页面里的ajax Complete事件中添加处理。这里就用到了jquery ajax的全局变量。

处理ajax和iframe自适应的代码:
代码如下:var sendcount = 0;
var completecount = 0;
// 添加ajax全局事件处理。
reSetIframeHeight();
$(document).ajaxStart(function (a, b, c) {
}).ajaxSend(function (e, xhr, opts) {
sendcount++;
}).ajaxError(function (e, xhr, opts) {
}).ajaxSuccess(function (e, xhr, opts) {
}).ajaxComplete(function (e, xhr, opts) {
completecount++;
reSetIframeHeight();

}).ajaxStop(function () {
});
先执行一下reSetIframeHeight,再在每个ajax完成后调用reSetIframeHeight。

经过测试有效。

文档

jqueryajax应用中iframe自适应高度问题解决方法_javascript技巧

jqueryajax应用中iframe自适应高度问题解决方法_javascript技巧:iframe自适应高度本身是很简单的方法,就是在页面加载完成后,重新计算一下高度即可。 代码如下: 代码如下://公共方法:设置iframe的高度以保证全部显示数据//function SetPageHeight() {// var iframe = getUrlParam('ifname')
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top