2016-03-04 4 views
0

Я использую jsPlumb для рисования линий между div. Сложная часть заключается в том, что я использую панели вкладок bootstrap, чтобы панель не отображалась при открытии страницы. Вторая сложность, некоторые divs сжимаются, заставляя меня перерисовывать коннекторы.jsPlumb repaintEverything, не работающий над всеми браузерами, но Firefox

Действие перерисовки отлично действует на Firefox, но в любом другом браузере разъемы ошибочны (Chrome фактически делает смещение точно от размера текущего смещения страницы, край просто перерисовывает все коннекторы где-то в небе).

Любая идея? Я попытаюсь опубликовать MWE как можно скорее (мой код на самом деле большой, но вот что я делаю):

jsPlumb.ready(function() { 
    jsPlumb.setContainer($('body')); // needed because connected divs are not at the same dom-tree level 

    $('a[data-toggle="tab"]').on('shown.bs.tab', function (event) 
     if (event.target.id == 'carto-pill') { 
      drawConnections(); 
     } else { 
      jsPlumb.detachEveryConnection(); // needed otherwise they are still visible when switching tabs 
     } 
    }); 
}); 

function drawConnections() { 

    var red = '#ff1d25', orange = '#f7931e' , green = '#39b54a'; 

    var width = 2; 
    var lineWidth = 2; 
    var outlineWidth = 2; 

    jsPlumb.connect({ 
     source:'carto-is_supported', 
     target:'focused-arg', 
     endpoint: [ "Rectangle", {width: width, height: 10 }], 
     anchors: ["Right", [0, 0.25, -1, 0] ], 
     paintStyle:{lineWidth: lineWidth, strokeStyle: green}, 
     endpointStyle:{fillStyle: green, outlineWidth: outlineWidth} 
    }); 
    // many other connections are also drawn 
    jsPlumb.repaintEverything(); 
} 

ответ

0

ОК нашел мое решение. Это нужно сказать jsPlumb правильному контейнеру. Вместо «тела» я даю основное содержание верхнего уровня (за исключением navbar) и voilà, оно волшебным образом работает повсюду.