1

盆景文档的“通信”部分 (http://docs.bonsaijs.org/overview/Communication.html) 有以下示例,它在除 IE9 之外的任何地方都可以运行:

<script src="http://cdnjs.cloudflare.com/ajax/libs/bonsai/0.4/bonsai.min.js"></script>
<div id="movie"></div>
<script>
  var movie = bonsai.run(
    document.getElementById('movie'),
    {
      code: function() {
        // receive data from the other side
        var text = new Text().addTo(stage);
        stage.on('message:externalData', function(data) {
          text.attr('text', data.nodeData);
        });
        stage.on('message', function(data) {
          if (data.bonsai === 'tree') {
            text.attr('textFillColor', 'red');
          }
        });
        stage.sendMessage('ready', {});
      }
    }
  );
  // emitted before code gets executed
  movie.on('load', function() {
    // receive event from the runner context
    movie.on('message:ready', function() {
      // send a categorized message to the runner context
      movie.sendMessage('externalData', {
        nodeData: document.getElementById('movie').innerHTML
      });
      // send just a message to the runner context
      movie.sendMessage({
        bonsai: 'tree'
      });
    });
  });
</script>

第一个问题是:为什么要修改以下代码:

<script src="http://cdnjs.cloudflare.com/ajax/libs/bonsai/0.4/bonsai.min.js"></script>
<div id="movie"></div>
<script>
var movie = bonsai.run(document.getElementById('movie'), 'movie.js');
  // emitted before code gets executed
  movie.on('load', function() {
    // receive event from the runner context
    movie.on('message:ready', function() {
      // send a categorized message to the runner context
      movie.sendMessage('externalData', {
        nodeData: document.getElementById('movie').innerHTML
      });
      // send just a message to the runner context
      movie.sendMessage({
        bonsai: 'tree'
      });
    });
  });
</script>

movie.js 在哪里:

document.getElementById('movie'),
{
  code: function() {
    // receive data from the other side
    var text = new Text().addTo(stage);
    stage.on('message:externalData', function(data) {
      text.attr('text', data.nodeData);
    });
    stage.on('message', function(data) {
      if (data.bonsai === 'tree') {
        text.attr('textFillColor', 'red');
      }
    });
    stage.sendMessage('ready', {});
  }
}

抛出“工人未定义”</p>

为什么原始代码在 IE9 中不起作用?

4

0 回答 0