いくつかのエラー情報を含む JQuery ダイアログと、より詳細なエラーの説明を切り替えるアクション リンク「詳細」があります。
私の問題は、ダイアログ ボックスを約 6 回開いて閉じると、開いたときに次第に遅くなり、応答しなくなることです。Google chrome からプロセスを強制終了するように求められることもあります。理由がわかりません。jquery ダイアログを間違った方法で使用しているのですか?
以下はコード例です。メインの html ページにある errorbox div は以下に表示されていません。それは単なる空のdivであり、そのコンテンツはコントローラーから取得され、部分ビューを返すだけです。
Javascript:
$(document).ready(function () {
$.ajaxSetup({
cache: false
});
var dialog = $(".errorbox").dialog({
title: 'Error',
autoOpen: false,
modal: false
});
$('.showhidetarget').hide();
//Open dialog box for errors
$(".openDialog").click(function (e) {
e.preventDefault();
$(".errorbox").load(this.href);
dialog.dialog('open');
});
//Show details for Error box message
$('.showhidetrigger').click(
function () {
$('.showhidetarget').toggle();
});
});
カミソリ部分ビュー:
<script src="../../Scripts/OpenDialog.js" type="text/javascript"></script>
<p>@Model.friendly_message</p>
<a class ="showhidetrigger" href="#">Details</a>
<div class = "showhidetarget">
<p>@Model.detailed_message</p>
</div>
含まれる jquery ファイル:
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/OpenDialog.js")" type="text/javascript" ></script>
**
編集
**
問題の解決策は見つかりましたが、理由は見つかりませんでした。
私のjavascriptファイルOpenDialogへのインクルードを部分ビューから削除し、リンクのトグルを部分ビューのスクリプトタグに移動すると、問題が修正されます。
したがって、部分ビューにjavascriptファイルを含めると問題が発生する可能性がありますが、その理由はわかりません。クリック関数はますます呼び出されます。最初はクリック関数を1回呼び出すだけです.2回目は2回呼び出します...次に4回、次に8回などです。そのため、そのコンテンツは何度もリロードされています。しかし、これを部分的なビューに含めると、なぜこれが発生するのかわかりません...
したがって、これが問題を引き起こしている理由を誰かが教えてくれれば、これを開いたままにします。