0

奇妙な問題に遭遇しました。iframe を呼び出している jsp があります。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 に答える