javascript 使用www.example.com()打开新窗口window.open,并在所述打开的窗口上运行函数

yhuiod9q  于 2023-01-11  发布在  Java
关注(0)|答案(1)|浏览(132)

我尝试在新窗口中生成条形码,并在新窗口中运行条形码生成器,但似乎无法在新窗口中生成所述条形码。我尝试使用window. focus(),但似乎不起作用。如果能在新窗口中生成条形码,而不在脚本要求使用输入的页面上显示条形码,我将非常感谢。

function doAll(value) {
  var newWin = window.open('', '_blank');
  newWin.document.write('<svg id="barcode"></svg>');
  newWin.focus();
  generateBar(value);
}

function generateBar(value) {
  JsBarcode('#barcode', value, {
    format: 'code128',
    displayValue: true,
    width: 1.8,
    height: 60
  });
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>Generate Barcode</title>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/water.css@2/out/water.css">
  <script src="https://cdn.jsdelivr.net/npm/jsbarcode@3.11.0/dist/JsBarcode.all.min.js">
  </script>
</head>

<body>

  <form>
    Enter Number: <input name="packageID" type="text" onchange="doAll(this.value)">
  </form>

</body>

</html>
ovfsdjhp

ovfsdjhp1#

JsBarcode('#barcode',
这里的选择器将查找document.querySelector,但是查找JsBarcode的源代码可以接受一个元素,因此您可以从newWin中获取该元素并将其传递给JsBarcode
示例..

function doAll(value){
  var newWin = window.open('','_blank');
  newWin.document.write('<svg id="barcode"></svg>');
  newWin.focus();
  var element = newWin.document.querySelector('#barcode');
  generateBar(element, value);
}

function generateBar(element, value){
  JsBarcode(element, value, {
    format: 'code128',
    displayValue: true,
    width: 1.8,
    height: 60
  });
}

相关问题