阻止加载隐藏的iframe的内容

use*_*289 12 iframe jquery hidden load modal-dialog

我有很多隐藏的<div>标签,(display: none)当我想加载一个jQuery模式时,我会调用它.这些<div>标签中的每一个都包含一个<iframe>调用不同页面的标签.

为了不让我的页面加载缓慢,我想知道是否有办法阻止<iframe>加载页面,直到我调用<div>模态?

Adi*_*dil 16

您可以通过在iframe的html中提供空src并稍后通过jquery/javascript分配src来在html呈现后加载iframe.

HTML

<iframe id="iframe1" ></iframe>
Run Code Online (Sandbox Code Playgroud)

Javascript,iframe可以加载某些动作,如按钮点击

document.getElementById('iframe1').src="/default.aspx";
Run Code Online (Sandbox Code Playgroud)

正如kern3l所说,我们可以在iframe中添加数据属性来保存src而不是硬编码.

HTML

<iframe id="iframe1" data-frameSrc="/default.aspx"></iframe>
Run Code Online (Sandbox Code Playgroud)

使用Javascript

ifrmame1 = $('#iframe1')
ifrmam1.src = ifrmam1.data("frameSrc");
Run Code Online (Sandbox Code Playgroud)

你也可以在jquery中创建一个新的框架并分配src,这将加载带有空白框架的页面.

$('<iframe>', {
   src: '/default.aspx',
   id:  'myFrame',
   frameborder: 0,
   scrolling: 'no'
   }).appendTo('#parentDivId'); 
Run Code Online (Sandbox Code Playgroud)

要么

var iframe = document.createElement('iframe');
iframe.frameBorder=0;
iframe.width="300px";
iframe.height="250px";
iframe.id="myFrame";
iframe.setAttribute("src", '/default.aspx');
document.getElementById("parentDivId").appendChild(iframe);
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案在网上有很多提及,但它有很大的流量.如果你没有设置src浏览器会将其设置为"about:blank".当你稍后显示你的模态并设置另一个src时它会加载,一切都会好,直到你的用户在浏览器中按下后退按钮,这会将你仍然显示的模态iframe返回到"about:blank".最佳选择是动态创建整个iframe元素. (2认同)