如何解决HTML5画布,文本和JavaScript
| 我有一个在画布上写文本的脚本。工作正常。问题是,如果我先进行Ajax调用以获取字符串,然后将其写入画布,则JavaScript似乎忽略了我要完成的顺序,并在Ajax调用之前编写了字符串。结果是脚本将打印到画布“未定义”。 伪代码://var str = ~some_ajax_call... <---If I use this,the output is undefined.
var str = \"hello world\";
context.fillStyle = \'#00f\';
context.font = \'italic 30px sans-serif\';
context.textBaseline = \'top\';
context.fillText (str,0);
解决方法
Ajax是
assync
,因此ajax调用下面的代码在服务器响应之前运行。仅在收到HTTP响应时才需要运行代码。
使用jQuery,将是这样的:
$.ajax({
url: \"sample.php\",success: function(d) {
context.fillStyle = \'#00f\';
context.font = \'italic 30px sans-serif\';
context.textBaseline = \'top\';
context.fillText (d,0);
});
, 由于ajax调用是异步的,因此您必须将打印逻辑放入ajax op的success
回调中。
例如:
var str = \"hello world\";
$.ajax({
url: \'/echo/json/\',success: function(data){
var context = document.getElementById(\'c\').getContext(\'2d\');
context.fillStyle = \'#00f\';
context.font = \'italic 30px sans-serif\';
context.textBaseline = \'top\';
context.fillText (str,0);
}
});
http://jsfiddle.net/BhENZ/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。