繁体   English   中英

有人可以帮助我理解为什么该Javascript可以在IE之外的所有地方使用吗?

[英]Can someone help me understand why this Javascript works everywhere but IE?

我在要构建的网站的首页上使用jQuery Vector Map( http://jqvmap.com/ )。

这个特殊的地图要求将其放置的div设置为内嵌大小。

为了使此地图具有响应性,我设置了以下代码:

HTML占位符:

<div id="map" style="width: 674px;height: 384px;"></div>

脚本:

<script src="{{ asset('components/jqvmap/jqvmap/jquery.vmap.min.js') }}"></script>
    <script src="{{ asset('components/jqvmap/jqvmap/maps/jquery.vmap.usa.js') }}">       </script>
    <script>
        function createMap() {
            var mapWidth = document.getElementById("map").clientWidth;
            var mapHeight = mapWidth * .55;

            document.getElementById("map").style.width = mapWidth + 'px';
            document.getElementById("map").style.height = mapHeight + 'px';

            jQuery('#map').vectorMap({ 
                map: 'usa_en',
                backgroundColor: null,
                borderColor: '#818181',
                borderOpacity: 0.85,
                borderWidth: 1,
                color: '#f4f3f0',
                enableZoom: true,
                hoverColor: '#c9dfaf',
                hoverOpacity: null,
                normalizeFunction: 'linear',
                scaleColors: ['#b6d6ff', '#005ace'],
                selectedColor: '#c9dfaf',
                selectedRegion: null,
                showTooltip: true,
                onRegionClick: function(element, code, region)
                {
                    $(location).attr('href','{{ route("search") }}?state='+ code);
                }
            });

        }

        $(document).ready(function() {
            createMap();
        });
        $(window).resize(function(){        
            createMap();
        });
    </script>

如您所见,我在页面加载时运行JS createMap()函数,此函数从设置div的大小开始以确保其正确适合。

然后,随着每个页面调整大小,将再次创建地图,以使其适合自身。

我对JS的了解不那么强,更多是后端开发人员,所以我不知道为什么这在IE中表现不佳。

基本上,有时它可以正确加载,但是其他一些则可以在IE中创建非常大的地图。

“我……更多是后端开发人员,所以我无法弄清楚为什么它在IE中表现不佳。” 不用担心,其他任何人也不能:)

一些googlin显示,很多人都报告了clientWidth,特别是在IE8中存在错误/功能异常。

也许试试这个:

var mapWidth = jQuery("#map").width()

代替这个:

var mapWidth = document.getElementById("map").clientWidth;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM