我有一个页面,其中包含一个带有三个选项卡的 jquery 选项卡元素。在该元素中,有一个地图(选项卡 1 - PolyMap)、图表(选项卡 2 - Devexpress)和数据网格(选项卡 3 - Devexpress)。该网站本身建立在 Foundation 4 之上,以提供响应式设计。使用基础,页面的宽度和高度会随着屏幕尺寸的变化而变化,但实际的地图和图形元素并没有改变。我实现了以下代码,以使地图和图形在屏幕尺寸发生变化(即纵向-横向)或初始加载页面时自动调整大小。
我对 javascript 编程相当陌生,所以我仍在尝试了解浏览器之间差异的复杂性。我通常使用 Chrome 进行开发,因此我根据 Chrome 中的工作原理开发了代码。我遇到的问题是,当我现在在 IE 或 Firfox(两个当前版本)中进行测试时,我得到了不同的结果。在 IE 中,两个元素都以 0px 的高度加载。在 Firefox 中,地图已正确加载(默认显示的选项卡),但图表加载的高度为 0px(图表选项卡最初未显示)。如果屏幕尺寸发生变化,脚本会触发并且尺寸会立即更正,所以我猜这要么是使用的问题$(window).load
,或者代码在页面在 IE 或 Firefox 中完全加载之前触发(尽管我很难理解它如何在 Chrome 中正常工作)。
有什么建议吗 - 请记住,我是新手,所以如果整个代码块应该重新设计,我完全愿意接受 - 我想学习......
代码(出现在关闭 html 标记之前):
function ResizeMap() {
var mPadding = $('#MapContent').css("padding");
mPadding = mPadding.substring(0, mPadding.length - 2);
mPadding = mPadding * 2;
if (MapContent.offsetWidth > 970) {
var nWidth = 970-mPadding;
var nHeight = 650;
} else {
var nWidth = MapContent.offsetWidth-mPadding;
var nHeight = nWidth * (650/(970-mPadding));
}
$('#map').width(nWidth);
$('#map').height(nHeight);
}
function ResizeChart() {
var cPadding = $('#ChartContent').css("padding");
cPadding = cPadding.substring(0, cPadding.length - 2);
cPadding = cPadding * 2;
if (ChartContent.offsetWidth > 970) {
var nWidth = 970-cPadding;
var nHeight = 650;
} else {
var nWidth = ChartContent.offsetWidth-cPadding;
var nHeight = nWidth * (650/(970-cPadding));
}
chart.SetWidth(nWidth);
chart.SetHeight(nHeight);
}
$(window).resize(function() {
ResizeMap();
ResizeChart();
});
$(window).load(function() {
ResizeMap();
ResizeChart();
});