BonsaiJS创建一个新的执行上下文(通常是一个 web worker),并且您在其中传递的代码bonsai.run
在不同的范围内执行,其中 jQuery 不可用。可以在这里找到有关 BonsaiJS 如何执行代码的详细信息。
但是要解决您的问题,您可以像这样与所谓的 BonsaiJS 运行器上下文进行通信:
$(function() {
var movie = bonsai.run(document.getElementById('movie'), {
// note: this function will be stringified and sent to the runner context
code: function() {
var rect= new Rect(0, 0, 100, 100).fill('red').addTo(stage);
rect.on('multi:pointerdown', function(e) {
// this is how you would pass data with your message
stage.sendMessage('openDialog', {
id: '#dialog-form'
});
// no data:
// stage.sendMessage('openDialog', {});
});
},
width: 500,
height: 400,
});
movie.on('load', function() {
movie.on('message:openDialog', function(data) {
$(data.id).dialog("open");
});
});
});