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