Eval Google 来自脚本标签中文本区域的地球代码

Eval Google Earth code from textarea in script tag

我有这段代码,我必须让它在文本区域中没有文本的情况下工作。 所以写在 textarea 中的代码应该在 script 标签中并且它应该可以工作。任何人都可以帮助我,因为我真的不知道 eval(document.getElementById('code').value 是如何工作的,所以我不知道如何集成它。这是我正在谈论的代码:

<html>
<head>
  <title>GEarthExtensions Samples - Drawing an extruded polygon</title>
  <script src="http://www.google.com/jsapi?key=ABQIAAAAsc0UQXoo2BnAJLhtpWCJFBTgHOxFyKCf35LCvsI_n4URElrkIhS9MkSlm_0NZWgrKFkOsnd5rEK0Lg" type="text/javascript"></script>
  <script src="extensions-0.2.1.pack.js" type="text/javascript"></script>
<script type="text/javascript">
/* <![CDATA[ */

var ge = null;
var gex = null;

google.load('earth', '1');

google.setOnLoadCallback(function() {
  google.earth.createInstance('map3d', function(pluginInstance) {
    ge = pluginInstance;
    ge.getWindow().setVisibility(true);

    gex = new GEarthExtensions(pluginInstance);

    //gex.util.lookAt([0, 0], { range: 800000, tilt: 65 });

  }, function() {});
});


/* ]]> */
</script>
</head>
<body>
  <div id="map3d_container" style="width: 500px; height: 500px;">
    <div id="map3d" style="height: 100%"></div>
  </div>
<textarea id="code" style="font-family: monospace; width: 500px; height: 200px;">
gex.dom.clearFeatures();

var placemark = gex.dom.addPlacemark({
  polygon: {
    polygon: [],
    extrude: true,
    altitudeMode: geo.ALTITUDE_ABSOLUTE
  },
  style: {
    line: { width: 0 },
     poly: '#ff0'
  }
});

var coords = placemark.getGeometry().getOuterBoundary().getCoordinates();

gex.edit.drawLineString(placemark.getGeometry().getOuterBoundary(), {
  drawCallback: function(coordIndex) {
    var coord = coords.get(coordIndex);
    coords.setLatLngAlt(coordIndex,
         coord.getLatitude(), coord.getLongitude(), 100000);
 }
});
</textarea><br/>
<input type="button" onclick="eval(document.getElementById('code').value);" value="Run"/>
</body>
</html>

对于运行script标签中的代码,需要先解析。 DOMParser 是一个很好的工具:

function run(value) {
  var parser = new DOMParser();
  var doc = parser.parseFromString(value,"text/html"); // create DOM from value
  var code = doc.getElementsByTagName("script"); // get script tags from that DOM
  if(!code.length) eval(value); // no script tag, eval the value directly
  else eval(code[0].innerText); // eval the text from the first script tag
}

测试HTML代码

<textarea id="code">
<script>
 alert("hello");
</script>
</textarea>
<button onclick="run(document.getElementById('code').value)">Run</button>