Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
触发JavaScript生成的链接问题_Javascript_Jquery_Chargebee - Fatal编程技术网

触发JavaScript生成的链接问题

触发JavaScript生成的链接问题,javascript,jquery,chargebee,Javascript,Jquery,Chargebee,当通过JavaScript动态添加此链接时,我无法启动此链接(触发Chargebee的脚本)。当它直接添加到html中时,它可以正常工作 检查时,整个生成的链接在浏览器中正确显示(使用变体填充),只是它并没有触发 以下是我与此相关的部分: JavaScript部分: var checkout = document.getElementById("checkout"); var link = '<a href="javascript:void

当通过JavaScript动态添加此链接时,我无法启动此链接(触发Chargebee的脚本)。当它直接添加到html中时,它可以正常工作

检查时,整个生成的链接在浏览器中正确显示(使用变体填充),只是它并没有触发

以下是我与此相关的部分:

JavaScript部分:

var checkout = document.getElementById("checkout");
         
var link = '<a href="javascript:void(0)" data-cb-type="checkout"' + data-cb-1 + data-cb-2 + data-cb-3'>Order</a>';
 
checkout.innerHTML = link;

var checkout=document.getElementById(“checkout”);
var-link='';
checkout.innerHTML=链接;
一个简单的div:


chargebee的脚本:


加载chargebee.js脚本后,它开始查找具有特定
数据cb
属性的标记
a
。脚本只执行一次。如果标记
a
在DOM中不存在,则脚本不执行任何操作。当您稍后添加标记
a
时,该标记完全无效,因为“发现阶段”已经结束

如果您想对chargebee的初始化过程有更多的控制,您应该选择开发人员提供的“通过API签出”选项

另外,有两种黑客解决方案:

  • 您可以在向DOM添加标记
    a
    后加载Chargebee脚本

  • 您显示的代码将生成语法错误,因此这里的代码中一定缺少某些内容…是的,上面的代码将无法工作,因为它缺少数据cb变量,也缺少真实的数据cb站点。这只是为了举例说明。请阅读他们的文档。我相信他们有动态内容的方法……非常感谢这些解决方案!第一个将在我的情况下工作,只需要在事件后加载ChargeBee。(否则,它将在选择第一个数据属性后激发)。它还需要传递带有chargebee站点名称的script.setAttribute。与此同时,我查看了他们的文档,事实上,他们有控制这些文档的选项。我们可以使用它来控制脚本何时被激发(我们添加不带site属性的主脚本):var chargebeeInstance=Chargebee.init({site:“site name”,})Chargebee.getInstance();
    function loadChargebee() {
        var script = document.createElement("script");
        script.src = "https://js.chargebee.com/v2/chargebee.js";
        script.type = "text/javascript";
        document.getElementsByTagName("head")[0].appendChild(script);
    }
    
    var checkout = document.getElementById("checkout");
             
    var link = '<a href="javascript:void(0)" data-cb-type="checkout"' + data-cb-1 + data-cb-2 + data-cb-3'>Order</a>';
     
    checkout.innerHTML = link;
    
    loadChargebee(); // <=== add Chargebee.js
    
    
    <a id="beecheckout" href="javascript:void(0)" data-cb-type="checkout" data-cb-1="" data-cb-2="" data-cb-3="">Order</a>
    
    document.getElementById('beecheckout').setAttribute('data-cb-1','new data value');