[英]ReferenceError: label is not defined in Dymo framework
I am playing with Dymo 's JS framework. 我正在使用Dymo的JS框架。 The original example works without issue, but it's loading the XML even when I don't want to click.
原始示例可以正常工作,但是即使我不想单击也可以加载XML。 I rewrited to execute Dymo code only when I call it:
我只在调用它时才重写以执行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>
Unfortunately after I call printnow(); 不幸的是,在我调用printnow()之后; I get
ReferenceError: label is not defined
Where is the problem? 我收到
ReferenceError: label is not defined
问题出在哪里?
First you have to read this one . 首先,你必须读这一个 。
In short, you are dealing with async code. 简而言之,您正在处理异步代码。 So, this
label.setObjectText("MENO", "test");
因此,此
label.setObjectText("MENO", "test");
and the rest of the code gets executed, before this label = dymo.label.framework.openLabelXml(labelXml);
在此
label = dymo.label.framework.openLabelXml(labelXml);
之前,其余代码将被执行label = dymo.label.framework.openLabelXml(labelXml);
line. 线。
Finally, you have to do something like this: 最后,您必须执行以下操作:
<script type="text/javascript">
function printnow() {
$.get("./cont.label", function(labelXml) {
var label = dymo.label.framework.openLabelXml(labelXml);
// 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);
}, "text");
};
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.