脚本未在IE9中加载

时间:2014-08-25 03:50:57

标签: javascript jquery svg internet-explorer-9

我一直在解决这个问题而没有运气。我不确定为什么我的jQuery代码没有在IE9中加载。它非常庞大,但它基本上只能检测DOM中的svg文档并对其进行操作。基本上,这就是我的代码的外观:

jQuery(document).ready(function($) {
    // init panzoom
    initPanZoom();

    function initPanZoom() {
        // get svg containers for each main tab
        var svgs = [$("#pcb").find("svg"), $("#gerber").find("svg")];

        $(".schematic-sheet").each(function(){
            svgs.push($(this).find("svg"));
        });

        var objPlaceholders = [];

        $.map(svgs, function(obj, index){
            objPlaceholders[index] = new PanZoom({
                svg: obj[0],
                viewportClass: "svgscale",
                userViewport: $("#user-viewport")[0]
            });

            obj.closest("div").find('.zoom-in').on('click', function(e){
                e.preventDefault();
                objPlaceholders[index].handleMouseClick(1.5);
            });
            obj.closest("div").find('.zoom-out').on('click', function(e){
                e.preventDefault();
                objPlaceholders[index].handleMouseClick(-1.5);
            });
            obj.closest("div").find('.reset').on('click', function(e){
                e.preventDefault();
                objPlaceholders[index].handleMouseClick(0);
            });
        });
     }
});

最奇怪的是,第一次加载它时,initPanZoom()根本就没有被调用。几分钟后,当你刷新时,它会被调用。所以我必须知道一些错误。请注意,这仅在IE9中出现。

更新

我还应该注意,此代码加载在iframe内的页面上。我注意到直接在浏览器中查看页面有时可以解决问题。

1 个答案:

答案 0 :(得分:0)

当您使用jQuery(document).ready(function($)并稍后将其更改为$时,请将其更改为$,即$( document ).ready(function() {

您关心的另一件事是将该函数调用到$( document ).ready(function() {中,因此您需要从function initPanZoom() { }中删除整个函数数据并直接使用它。即。

$( document ).ready(function()
{
   // get svg containers for each main tab
        var svgs = [$("#pcb").find("svg"), $("#gerber").find("svg")];

        $(".schematic-sheet").each(function(){
            svgs.push($(this).find("svg"));
        });

        var objPlaceholders = [];

        $.map(svgs, function(obj, index){
            objPlaceholders[index] = new PanZoom({
                svg: obj[0],
                viewportClass: "svgscale",
                userViewport: $("#user-viewport")[0]
            });

            obj.closest("div").find('.zoom-in').on('click', function(e){
                e.preventDefault();
                objPlaceholders[index].handleMouseClick(1.5);
            });
            obj.closest("div").find('.zoom-out').on('click', function(e){
                e.preventDefault();
                objPlaceholders[index].handleMouseClick(-1.5);
            });
            obj.closest("div").find('.reset').on('click', function(e){
                e.preventDefault();
                objPlaceholders[index].handleMouseClick(0);
            });
        });     
});