2017-06-22 2 views
0

Ich bin ein Neuling von JavaScript insbesondere von Cytoscape.JavaScript Cytoscape funktioniert nicht, bis die Größe ändern Fenster

Ich habe diesen Code:

  <div id="graphicalEditor" class="tab-pane fade"> 

      <br> Name: <input type="text" id="name"> <input 
       type="button" onclick="addnode('name');" value="add node"> 
      <input type="button" onclick="cy.remove('node');" value="clear"> 
      <input type="button" onclick="sendData()" value="send"> <br> 
      <br> 

      <div id="cy" 
       style="width: 60em; height: 30em; postion: absolute; border: 1px solid black;"></div> 

      <script type="text/javascript"> 
       var cy = cytoscape({ 

        container : document.getElementById('cy'), 

        layout : { 
         name : 'preset' 
        }, 

        // so we can see the ids 
        style : [ { 
         selector : 'node', 
         style : { 
          'content' : 'data(id)' 
         } 
        } ] 

       }); 
      </script> 

      <script type="text/javascript"> 
       function addnode(p) { 

        var nome = document.getElementById(p).value; 

        var eles = cy.add([ { 
         group : "nodes", 
         data : { 
          id : nome 
         }, 
         position : { 
          x : 100, 
          y : 100 
         } 
        } 

        ]); 
       } 
      </script> 

      <script type="text/javascript"> 
       function sendData() { 
        $.ajax({ 
         type : 'GET', 
         dataType : 'json', 
         contentType : 'application/json', 
         url : "/testAjax", 
         data : cy.json() 

        }); 
       } 
      </script> 
     </div> 

Kann mir jemand erklären, warum die div von Cytoscape mit js funktioniert nur, nachdem ich im Firefox-Fenster Größe ändern? Nach der Größenänderung funktioniert alles gut.

Ich weiß nicht, ob es relevant ist, aber das div ist in Bootstrap Nav-Tabs.

Antwort

0

Sie benötigen eine Initialisierung Cytoscape in einer vollständig die Seite vor Belastung cytospace DOMContentLoaded eventlistener

document.addEventListener("DOMContentLoaded", function() { 
    cy = cytoscape({..}) 
} 
+0

' '... funktioniert nicht :( – alex

+0

die folgenden (wie so ziemlich das gleiche, was Sie haben) Ausprobiert und scheinen keine Probleme zu haben .. https://jsbin.com/vuqeremuko/3/edit?html,console,output –

+0

ja mein Code funktioniert ... ich weiß es .. Mein Problem ist, dass Javascript funktioniert, nachdem ich meine Browserseite geändert habe – alex

0

Versuchen Sie wickeln einen Behälter asign. Zum Beispiel:

<script type="text/javascript"> 
    var cy; 
    $(document).ready(function(){ 
    cy = cytoscape({ 
     container : document.getElementById('cy'), 
      layout : { 
       name : 'preset' 
      }, 
       // so we can see the ids 
      style : [ { 
       selector : 'node', 
       style : { 
       'content' : 'data(id)' 
       } 
      } ] 
    }); 
    }); 
</script> 
Verwandte Themen