解决父页面加载iframe时,src链接中参数值过大导致加载失败的问题

有时候我们在使用iframe时,喜欢这么写

<iframe src="*******.do?param=****" id="leftFrame" name="leftFrame" frameborder="0"></iframe>

或者是使用js加载src:

var params = "?pk_id="+pk_id;

var frameLeftSrc = "<%=path %>/****/****.do"+params;

$(‘#leftFrame‘).attr("src",frameLeftSrc);

(先说明一下,此处只是以一个参数为例,实际可能会有多个参数。我们继续)

上面两种写法,都可以实现iframe的加载,我们可能会以为没问题,很正确。其实上面的写法的确是没有太大的问题,对于参数的值不长的时候,注意是参数的值的长度,不是参数的多少。比如说,我要向这个iframe中传递个参数,参数名叫pk_id,值是由主页面或者其他页面返回的一长串的主键拼接起来的值,起码3000个字符以上,这个时候我们再用这个方法访问就有问题了。因为这种url方法是通过get进行提交的,参数的长度是有限制的。

那么对于这种大数据传输的时候怎么办呢,我目前想到的就有两种(大家有什么更好的提议尽管提,相互交流,相互提高):

一、仍旧用这个种方式传递,但是参数的值不要过长,前提是不长的参数值可以通过关联查询到你想要的长的参数值,这样iframe接收到这个不长的参数值之后,你再想办法获得在iframe子页面中获得你想要的长的参数值。(可以用,但不建议,因为需要个前提)

二、在主页面采用以下方法,进行加载iframe页面即可:

主页面:<iframe src="about:blank" id="leftFrame" name="leftFrame"  frameborder="0">

js:

var url="<%=path %>/pubitem/toChoosePubItemLeft.do"; //定义iframe页面的form表单的action

//定义form表单

var html1=‘<form id="queryForm" name="queryForm" method="post" target="_self" action="‘+url+‘">‘+

‘<input type="hidden" id="pk_id" name="pk_id" value="‘+pk_id+‘"/>‘+      //pk_id是一个长度超过3000字符的值

‘</form>‘;

document.getElementById(‘leftFrame‘).contentWindow.document.write(html1);  //将表单写入iframe中

document.getElementById(‘leftFrame‘).contentWindow.document.getElementById(‘queryForm‘).submit();//执行iframe中表单的提交

将以上方法封装到一个方法里面,然后主页面加载的时候调用这个方法,就会将主页面的大数据传递给iframe页面了。

时间: 2024-08-02 01:53:34

解决父页面加载iframe时,src链接中参数值过大导致加载失败的问题的相关文章

在父页面和其iframe之间函数回调 父页面回调iframe里写的函数

// @shaoyang  父页面 window['mengBanLogin']={ mengBanArr : new Array(), mengBanLoginSuccess : function(){ console.log('mengbanzhixing'); if(mengBanLogin.mengBanArr.length > 0){ for(var i = mengBanLogin.mengBanArr.length-1; i >= 0; i--){ mengBanLogin.me

解决父类加载iframe,src参数过大导致加载失败

<iframe src="*******.do?param=****" id="leftFrame" name="leftFrame" frameborder="0"></iframe> 或者是使用js加载src: var params = "?pk_id="+pk_id; var frameLeftSrc = "<%=path %>/****/****.do&

父页面刷新 保持iframe页面url不变

思路:点击父页面时写cookies-->刷新时从cookies中奖内容读取出来. 本文转自:http://blog.163.com/[email protected]/blog/static/114637885201282415580/ <body onbeforeunload="check()"> <iframe id='fjob' name='fjob' style='width:757px;margin-top:10px; height:960px;pad

asp.net中TreeView的大数据加载速度优化

由于数据量太大,加载树时间很长,所以进行了优化 前台 .aspx <asp:Panel ID="Panel2" runat="server" Height="600px" ScrollBars="Auto"> <asp:TreeView ID="TreeView1" runat="server" ForeColor="Black" OnTreeNod

父页面操作嵌套iframe子页面的HTML标签元素

一个页面A.html使用iframe嵌套一个页面B.html,在A页面写js操作B页面HTML元素,首先要获取到B页面document对象,才能对嵌套页面进行操作 请看一个实例,在A页面写js操作B页面div的内容: A.html代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="

如何在父页面内触发iframe的元素

父页面的iframe <iframe src="{{ url_for('room_info.person_open_record', resiId =resiId) }}" style="width: 100%;" id="face_record"></iframe> iframe页面的点击的class <img src="{{ i.imgUrl }}" class="table_img

解决百度编辑器在编辑视频时src丢失的问题

问题描述:使用的是最新的UEditor 1.4.3.3版本,在上传完视频后,编辑的时候出现视频的src丢失的问题 解决方式:修改ueditor.config.js文件,将 img: ['src', 'alt', 'title', 'width', 'height', 'id', '_src', 'loadingclass', 'class', 'data-latex'], 改为 img: ['src', 'alt', 'title', 'width', 'height', 'id', '_url

Iframe父页面与子页面之间的调用

专业词语解释如下:     Iframe:iframe元素是文档中的文档.     window对象: 浏览器会在其打开一个HTML文档时创建一个对应的window对象.但是,如果一个文档定义了一个或者多个框架(即:包含一个或者多个frame或者iframe标签),浏览器就会为原始文档创建一个window对象,再为每个iframe创建额外的window对象,这些额外的window对象是原始窗口的子窗口. contentWindow: 是指指定的iframe或者iframe所在的window对象.

使用webview加载网页时session同步

直接调用Android的webview加载URL时,由于需要登录的session导致URL无法显示,解决方案是在需要访问的URL中加session: String reporturl = "http://xxx.xxx.xx"; CookieSyncManager.createInstance(getApplication()); CookieManager cookieManager = CookieManager.getInstance(); CookieSyncManager.g