我一直在解决这个问题而没有运气。我不确定为什么我的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内的页面上。我注意到直接在浏览器中查看页面有时可以解决问题。
答案 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);
});
});
});