0

我遇到了一个奇怪的问题。我有一个 jsp ,它正在调用 iframe 。iframe 加载了来自 java 的数据。

现在要渲染 iframe,我正在使用自定义 的 control-modal.js

现在我的 iframe 在 li 标签之后编码,如下所示:

<li>
<a id="modalLink"  href="#myModal">Set up my Modal</a>
</li>
<div id="myModal" >
<div class="modalsubcol">
<p class="close"><a href="#"><img src="/.../close-button.gif" alt="Close"/></a></p>
<iframe id="modal-frame"style="display:none;" height="430" 
width="675" src="<%= getTheModal()%>"></iframe>
</div>
</div>

我在我的jsp的头部调用模态,如下所示:

<script type="text/javascript">
window.onload=function modalOverride(){
var myModal;
$('modal-frame').style.display ='block';
myModal = new Control.Modal($('modalLink'), {
afterOpen : function(){$$('.close a').invoke('observe','click',function(e){Control.Modal.close(); Event.stop(e);});},
opacity: 0.3,
width: 675,
fade: true,
fadeDuration: 0.1,
autoOpenIfLinked: false
});
}
</script>

现在链接:设置我的模态是包含许多链接的页面的一部分。当我打开该页面时,也会调用从模态渲染数据的 java 类。但这只有在我单击设置我的模态链接时才会发生。

在有人告诉我之前,这个问题不是由于

  window.onload

事件,我已经使用它,否则当我单击前面提到的链接时,模式不会被加载。我也尝试过删除window.onload事件。如果我这样做,java 类仍然会被加载,现在我的 iframe 没有被加载。火虫也没有错误出现。

4

1 回答 1

0

当您将其放在页面上时:

<iframe id="modal-frame"style="display:none;" height="430" width="675" src="<%= getTheModal()%>"></iframe>

无论您是否设置了 display: none css 属性,都会加载 iframe 的源代码。

另请注意,JSP 不会“调用”iframe,它们只是在 HTTP 响应中呈现 iframe 标记,浏览器会解释 iframe 并呈现 iframe src

如果您希望显示/隐藏 iframe,您可以使用 JQuery 来执行此操作:

$('.modal-frame').toggle();

如果您确实希望仅在单击链接时包含其他页面,则需要在单击链接时使用 AJAX 发出请求或使用 Javascript 动态加载 iframe。

于 2013-03-19T13:20:39.007 回答