首先,我想通过表达我对 IE 的厌恶程度来作为这个问题的序言。有时我会在半夜从 IE 引发的噩梦中醒来,让我尖叫着从床上跳起来,有时还会无情地殴打我周围的任何人。我的邻居讨厌它。只是听到“IE”让我畏缩。但我离题了。
无论如何,我的 MVC Web 应用程序上有一个页面,它通过 AJAX(通过不同的视图)启动一个新页面并显示一个图表。然而,问题是当我打开新窗口时,仅在 IE 中,脚本没有加载(或者至少它们没有及时加载?)但是我在第一次引用时得到“jQuery 未定义” 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);
}