javascript - 从脚本标记中的文本区域评估 Google Earth 代码

标签 javascript html eval google-earth-plugin

我已经有了这段代码,我必须让它在没有文本区域的文本的情况下工作。 因此,在文本区域中编写的代码应该在脚本标记中并且它应该可以工作。任何人都可以帮助我,因为我真的不知道 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>

关于javascript - 从脚本标记中的文本区域评估 Google Earth 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31914214/

相关文章:

javascript - 如何找到方法所属的实例?

html - 我如何在旧版本的 firefox 和 chrome 上使用 "display : flex "css 属性?

javascript - 在AngularJS中通过字符串访问变量

javascript - 替代 eval() 以使用 LiveValidation 构造函数

JavaScript RegEx 部分匹配/只返回一组的匹配值

javascript - 使用我在 laravel 中从 ajax 过滤的数据将 "append"VUE 组件转换为 DOM 的正确方法是什么?

javascript - 一个类中存在重复的 div,然后删除重复的 div

html - 如何动态加载CSS

Javascript Logo 移动鼠标悬停功能

javascript - 在 JavaScript 中使用 `return false` 时处理 `eval`