2014-02-12 2 views
0

У меня есть интерактивный SVG, который нужно рисовать в разных местах на моем сайте. В настоящее время я могу сделать это, выполнив это на каждой странице.Магазин raphael svg в переменной javascript

$.getScript(UTIL.theme_dir() + '/assets/js/data/lot-plan.js', function() { 

    // Plan Interactions 
    // Builds the hovers and click events 
    obj.planInteractions(lotInfo); 

    // When clicking on custom title blocks, highlight approriate units 
    $(".custom-title").on('click', function(){ 
     if(!$(this).hasClass('disabled')){ 

      obj.planHighlight(lotInfo, $(this)); 

     } 
    }); 

    obj.scaleSVG('#lot-plan'); 

}); 

Но, как вы можете видеть, это будет вызывать файл lot-plan.js каждый раз. Я пытался выяснить способ называть его один раз и хранить его данные в var для повторного использования. Этот файл плана лотов - это Raphael SVG, поэтому после загрузки кода он отображает svg на странице. Загрузка этого файла также дает мне доступ к объекту «lotInfo», в котором есть некоторые элементы конфигурации.

Я пытался вызвать файл с помощью getScript и сохранить его в переменной и проверить, установлена ​​ли эта переменная, но я не могу получить доступ к js из файла, в основном, svg не визуализации.

Я все об этом не так? Кто-нибудь может понять это? Пожалуйста, спросите, нужна ли вам дополнительная информация/код, я буду рад предоставить.

+0

Вам было бы интересно сначала загрузить svg как XML через XMLHttpRequest? –

ответ

0

Juat упаковывают вы хотите рассмотреть XMLHTTPRequest за мой комментарий выше ..

Вы можете получить строку XML, который может быть использован для заполнения innerHTML для Div на вашей веб-странице. И/Или вы можете работать с элементами как узлы XML, а затем клонировать их в свой локальный SVG.

var XMLdoc 
function loadSVGasXML() 
{ 
    var SVGFile="yourSVGFile.svg" 
    var loadXML = new XMLHttpRequest; 
    function handler() 
    { 
     if(loadXML.readyState == 4) 
     { 
      if (loadXML.status == 200) //---loaded ok--- 
      { 
       //---responseText--- 
       var xmlString=loadXML.responseText 
       //---mySVGDIV.innerHTML=xmlString 
       //---DOMParser--- 
       var parser = new DOMParser(); 
       XMLdoc=parser.parseFromString(xmlString,"text/xml").documentElement ; 
      } 
     } 
    } 
    if (loadXML != null) 
    { 
     loadXML.open("GET", SVGFile, true); 
     loadXML.onreadystatechange = handler; 
     loadXML.send(); 
    } 
} 
Смежные вопросы