使用模板变量作为脚本 src 的一部分

Posted

技术标签:

【中文标题】使用模板变量作为脚本 src 的一部分【英文标题】:Use template variable as part of script src 【发布时间】:2020-07-10 01:23:18 【问题描述】:

我正在尝试创建一个模型付款弹出窗口,用户可以在其中在 google 应用脚本中升级他们的计划。在我的.gs 文件中,我有:

function manageSubscription() 
  var title = 'subscribe';
  var html = HtmlService.createTemplateFromFile('subscribe');
  html.email = Session.getActiveUser().getEmail();
  var htmlOutput = html.evaluate();
  htmlOutput.setTitle(title).setWidth(200).setHeight(200)
  DocumentApp.getUi().showModalDialog(htmlOutput, title);


在我的.html 文件中,我试图在他们注册时使用该电子邮件地址将其传递给贝宝:

  <script id="paypal_js"></script> // how do I set the src???
  <script>
  $(document).ready(function()
    var src = 'https://www.paypal.com/sdk/js?client-id=my-client-id&email=';
    document.getElementById('paypal_js').src = src+<?= email ?>;

    paypal.Buttons(
      createSubscription: function(data, actions) 
        return actions.subscription.create('plan_id': 'P-my-plan');
      ,
      onApprove: function(data, actions) 
        google.script.host.close();
      
    ).render('#paypal-button-container');
  );
  </script>

但是,我在浏览器控制台中得到ReferenceError: paypal is not defined。奇怪的是,我可以做一个简单的 'alert();'并看到我收到了电子邮件。

【问题讨论】:

【参考方案1】:

问题在于您的代码使用paypal, 您正在动态添加script,我假设您将从该脚本中获得paypal 作为全局对象。

您忘记的是,在您的代码执行paypal.Buttons 时,paypal 在浏览器中不可用。因为,它仍然可能从脚本中获取和评估代码,你刚刚包括在内。您必须监听脚本 onload 事件并在此之后调用所需的函数。

<script id="paypal_js"></script> // how do I set the src???
  <script>
  $(document).ready(function()
    var src = 'https://www.paypal.com/sdk/js?client-id=my-client-id&email=';
    var scriptTag = document.getElementById('paypal_js')
    scriptTag.src = src+<?= email ?>;

    scriptTag.onload = function() 
      paypal.Buttons(
        createSubscription: function(data, actions) 
          return actions.subscription.create('plan_id': 'P-my-plan');
        ,
        onApprove: function(data, actions) 
          google.script.host.close();
        
      ).render('#paypal-button-container');
    
  );
  </script>

【讨论】:

以上是关于使用模板变量作为脚本 src 的一部分的主要内容,如果未能解决你的问题,请参考以下文章

为部分模板使用变量

联合作为模板化基类的部分特化

什么是模板推导中的部分排序程序

有没有一种方法可以通过使用 POST 变量来分配 Mako 模板内的图像 src?

更新变量时动态刷新模板的一部分golang

Django:如何使用模板变量和 url 标签