【发布时间】:2015-10-11 21:38:34
【问题描述】:
我在玩Dymo 的 JS 框架。 original example 可以正常工作,但即使我不想点击它也会加载 XML。我只在调用它时才重写以执行 Dymo 代码:
<script type="text/javascript">
function printnow() {
$.get("./cont.label", function(labelXml) {
label = dymo.label.framework.openLabelXml(labelXml);
}, "text");
// open label
// set label text
label.setObjectText("MENO", "test");
label.setObjectText("MUNKA", "test");
label.setObjectText("DESCRIPTION", test);
// select printer to print on
// for simplicity sake just use the first LabelWriter printer
var printers = dymo.label.framework.getPrinters();
if (printers.length == 0) throw "No DYMO printers are installed. Install DYMO printers.";
var printerName = "";
for (var i = 0; i < printers.length; ++i) {
var printer = printers[i];
if (printer.printerType == "LabelWriterPrinter") {
printerName = printer.name;
break;
}
}
if (printerName == "") throw "No LabelWriter printers found. Install LabelWriter printer";
// finally print the label
label.print(printerName);
};
</script>
不幸的是,在我调用 printnow(); 之后我得到ReferenceError: label is not defined 问题出在哪里?
【问题讨论】:
-
$.get()调用是异步。在 HTTP 调用完成之前,变量label不会获得值,但$.get()调用本身会立即返回。将准备和打印内容的代码放入回调中。
标签: javascript dymo