javascript - 每次我调用它的twig模板时执行javascript

标签 javascript php twig

我有一个 php 脚本,它通过 for 循环调用另一个脚本。然后调用的脚本会回显一个 Twig 模板,该模板附加了一个可导出 pdf 的 JavaScript。问题是 JavaScript 只执行一次。流程如下:

generate-invoice.php ->invoice.php -> 具有脚本标签的 Twig 模板 -> 该 JavaScript 的代码是:

window.onload = function() {
  kendo.pdf.defineFont({
      "Comfortaa": "/doc/fonts/Comfortaa-Regular.ttf",
      "Comfortaa|Bold": "/doc/fonts/Comfortaa-Bold.ttf",
  });

  var inv_num = document.querySelector('#inv_num').dataset.id;
  var company = document.querySelector('#company').dataset.id;

  function ExportPdf(){ 
      kendo.drawing
      .drawDOM("#myCanvas", 
      {
      paperSize: "A4",
      margin: { top: "0.5cm", bottom: "0.5cm", left: "0.5cm", right: "0.5cm" 
},
      scale: 0.8,
      height: 500
      })
      .then(function(group){
      kendo.drawing.pdf.saveAs(group,company + " | Invoice #" + inv_num + 
".pdf")
      });
  }

  ExportPdf();
  console.log('It ran');
}

当我查看控制台时,“it ran”仅发布一次,而它应该发布两次,因为 Twig 模板被调用了两次。

编辑:只是想让您知道我正在通过将其包含在 for 循环中来调用发票.php 脚本。也许这就是导致此问题的原因?

最佳答案

要记录字符串两次或调用脚本的次数,请将语句移至 ExportPdf() 函数

window.inload 调用它只会运行一次,这是第一次加载窗口。

window.onload = function() {
  kendo.pdf.defineFont({
      "Comfortaa": "/doc/fonts/Comfortaa-Regular.ttf",
      "Comfortaa|Bold": "/doc/fonts/Comfortaa-Bold.ttf",
  });

  var inv_num = document.querySelector('#inv_num').dataset.id;
  var company = document.querySelector('#company').dataset.id;

  function ExportPdf(){ 
      kendo.drawing
      .drawDOM("#myCanvas", 
      {
      paperSize: "A4",
      margin: { top: "0.5cm", bottom: "0.5cm", left: "0.5cm", right: "0.5cm" 
      },
      scale: 0.8,
      height: 500
      })
      .then(function(group){
      kendo.drawing.pdf.saveAs(group,company + " | Invoice #" + inv_num + ".pdf")
      });
      //Moved here
      console.log('It ran');
  }

  ExportPdf();
}

编辑: window.onload 只会触发一次,除非浏览器刷新,否则永远不会触发。为了获得所需的结果,我建议您将该函数放置在 window.onload 之外。在这种情况下,在 HTML/JavaScript 代码中,您需要将调用模板的主函数包装在 .onload 中。

关于javascript - 每次我调用它的twig模板时执行javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56569591/

相关文章:

javascript 不返回 false

javascript - 我的算法正确吗? (值是否在范围内)

javascript - 类型错误为空

php - PHP的开放2个TCP套接字

javascript - 加载 json 数据的函数应该放在哪里?

php - 如何获取 Joomla 文章的标题?

php - 无法修改 Wordpress 中的标题信息错误

twig - 尽管有子页面,但 page.collection() 为空

symfony - 避免 Twig block 输出

javascript - 谷歌地图多个标记