まず、この質問の冒頭で、私が IE をどれほどひどく嫌っているのかを説明したいと思います。IE によって引き起こされた悪夢から夜中に目が覚めることがあり、叫びながらベッドから飛び起きたり、周囲の人を容赦なく殴ったりすることがあります。私の隣人はそれを嫌います。「IE」と聞くだけでゾッとする。しかし、私は脱線します。
とにかく、AJAX を介して (別のビューを介して) 新しいページを起動し、グラフを表示する MVC Web アプリのページがあります。ただし、問題は、IE でのみ新しいウィンドウを開くと、スクリプトが読み込まれないことです (または、少なくとも時間内に読み込まれませんか?)。 jQuery オブジェクト。
ただし、リロードすると、すべてが正常にロードされます。スクリプトが IE に読み込まれない原因は何ですか? Chrome と FF は正常に動作します。
新しいウィンドウに使用する ajax 呼び出しは次のとおりです。
$.ajax({
type: "POST",
url: actionURL + qs,
data: $(this).serialize(),
success: function (outputString) {
//$("#reportJSON").html(outputString).fadeIn();
var contentFromFirstPage = document.getElementById('reportArea').innerHTML;
var printContent = outputString;
var windowUrl = 'about:blank';
var uniqueName = new Date();
var windowName = 'Print' + uniqueName.getTime();
var printWindow = window.open(windowUrl, windowName, 'scrollbars=1,menubar=1,height=800,width=600,resizable=1');
printWindow.document.write(printContent);
printWindow.focus();
//printWindow.document.close();
}
}).error(function (response) {
alert("something went wrong here with PrintPreview!!!" + response);
});
ajax が呼び出すアクションは次のとおりです。
public ActionResult PrintPreview(string reportId, string date, string dateFrom, string dateTo)
{
Reports reports = new Reports
{
ReportId = Convert.ToInt64(reportId),
Date = Convert.ToDateTime(date),
DateFrom = Convert.ToDateTime(dateFrom),
DateTo = Convert.ToDateTime(dateTo),
AvailableReports = this.FetchAvailableReports()
};
reports.AvailableReports = this.FetchAvailableReports();
reports.SelectedReport = this.FetchReportLayout(reports.ReportId);
reports.DynamicGridDataSource = this.FetchReportGrid(reports);
reports.DynamicChartDataSource = this.FetchReportChart(reports);
return renderViewToString("PrintPreview", reports);
}