私はxpages(jqueryとブートストラップファイルを持つ)でテーマを作成しました。私はブートストラップモーダルを作成し、モーダルの本体に別のページを動的にロードしています。私はクリックでダイアログを呼び出すとき 後は今(MainFormをでサブフォームのようなものです)私のカスタム制御コードブートストラップを呼び出す際にjqueryを複数回ロードすることを避けるモーダル/ダイアログ
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core" dojoParseOnLoad="false"
dojoTheme="false" dojoForm="false">
<xp:div id="test">
<xp:this.attrs>
<xp:attr name="role" value="dialog"></xp:attr>
</xp:this.attrs>
<xp:div>
<div class="modal-content">
<div>
<button type="button" class="close"
data-dismiss="modal" aria-hidden="true">
×
</button>
<h4>
</h4>
</div>
<div class="modal-body">
</div>
<div styleClass='modal-footer'>
</div>
</div>
</xp:div>
</xp:div>
<xp:eventHandler event="onClientLoad" submit="false">
<xp:this.script><![CDATA[jQuery(document).ready(function() {
});]]></xp:this.script>
</xp:eventHandler>
<xp:scriptBlock id="scriptBlock">
<xp:this.value><![CDATA[
// Fill modal with content from link href
var id="#{javascript:var id=compositeData.dialogid; getClientId(id)}"
x$(id).on("show.bs.modal", function(e) {
alert('fires immediately when the show instance method is
called')
$(this).find(".modal-body").load('./LoginAsAdmin.xsp');
});
x$(id).on('shown.bs.modal', function (e) {
//var test = #{javascript:print('==========server side')};
alert('fired when the modal has been made visible')
})
x$(id).on('hide.bs.modal', function (e) {
alert('fired immediately when the hide instance method has been
called')
})
x$(id).on('hidden.bs.modal', function (e) {
alert('fired when the modal has finished being hidden from the
user ')
$(this).removeData('bs.modal');
})
x$(id).on('loaded.bs.modal', function (e) {
alert('fired when the modal has loaded content')
})
]]></xp:this.value>
</xp:scriptBlock>
</xp:view>
私は、次のブートストラップモーダル
x$("#{id:test}").modal("show")
を呼んでいるメインページのコードです私はブートストラップモーダルを呼び出すとき、私は実際のページをロードし、それが再びロードされるときにjqueryが2回ロードされたためです。私はモーダル内でiframeを使わずにページ内でjqueryを一度にロードできる方法はありますか?
「動的に他のページを動的にロードしていますか?そのコードを私たちに教えてください。あなたが「読み込んでいる」ものは何ですか、ほかのページのフルHTMLを取得していますか?手を離せば、他のページ全体ではなく、後のコンテンツだけを読み込んだり、iframeにページを読み込んだりすることができますが、実際に行っていることを確認する必要があります。 – DelightedD0D
私の質問に実際のコードを追加しました。私は "shown.bs.modal"イベントのモーダルの本体に別のページをロードしています。フォームのコンテンツのみを追加することは困難です。フォームにはいくつかの条件に基づいて隠される多くのセクションがあるためです。 – gkreddy
Xpage用に生成されたスクリプトのため、ロードされたモーダルページが壊れる可能性が高くなります。代わりに動的コンテンツコンポーネントとカスタムコントロールを使用することをお勧めします。 –