如何通过 Jquery 使 onclick 事件起作用
How to make onclick event works via Jquery
我们的 shopify 商店遇到了一些问题:我们想尝试手动将 _ga 参数发送到 checkout.shopify.com。我有通过添加到 onclick 这行代码在其他商店修复此问题的经验:
$html += "<a href=\"/checkout\" onclick=\"ga(function (tracker) {var linkerParam = tracker.get('linkerParam'); document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';}); document.getElementById('cartform').submit();\" class=\"btn btn-1 btn-block big\">{{ 'general.cart_info.checkout' | t }}</a>";
但是这个网站不起作用。这是现在的样子:
jQuery('<div class="action"><button class="btn btn-default" onclick="window.location=\'/checkout\'">{{ 'general.header.cart_info.checkout' | t }}</button></div>').appendTo(cart_summary);
这就是我想要做的:
jQuery('<div class="action"><a href="/checkout\" id="checkout-link" class="btn btn-default" onclick=\"ga(function (tracker) {var linkerParam = tracker.get('linkerParam'); document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';}); document.getElementById('cartform').submit();\">{{ 'general.header.cart_info.checkout' | t }}</button></div>').appendTo(cart_summary);
我也试着做这个:
$(document).ready(function() {
$("a#checkout-link").each(function() {
var text = $(this).text();
var thisEvent = $(this).attr("onclick"); // grab the original onclick event
$(this).click(function(event) { // when someone clicks these links
event.preventDefault(); // don't open the link yet
ga(function (tracker) {var linkerParam = tracker.get('linkerParam');
document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';});
document.getElementById('cartform').submit();
setTimeout(function() { // now wait 300 milliseconds...
eval(thisEvent); // ... and continue with the onclick event
},300);
});
});
});
所有这些方法都行不通。我知道我在代码方面是菜鸟,但也许有人可以帮助我?
那么你想在页面被重定向之前执行那个 ga 函数吗?如果是这样,请尝试创建一个简单的函数来执行您想要执行的操作:
function saveLinkerParam(){
ga(function (tracker) {var linkerParam = tracker.get('linkerParam'); document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';});
}
然后在已经存在的onclick handler中执行它(只是在window.location改变之前:
jQuery('<div class="action"><button class="btn btn-default" onclick="saveLinkerParam();window.location=\'/checkout\' + ">{{ 'general.header.cart_info.checkout' | t }}</button></div>').appendTo(cart_summary);
(您不必创建新函数 saveLinkerParam,但我认为它使代码更具可读性)
我还没有尝试实际执行这段代码,所以如果您遇到任何语法错误,请告诉我。顺便说一句,我认为您尝试的代码的问题可能是语法,更准确地说,当您在 jQuery 函数中连接文本和变量时。
我们的 shopify 商店遇到了一些问题:我们想尝试手动将 _ga 参数发送到 checkout.shopify.com。我有通过添加到 onclick 这行代码在其他商店修复此问题的经验:
$html += "<a href=\"/checkout\" onclick=\"ga(function (tracker) {var linkerParam = tracker.get('linkerParam'); document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';}); document.getElementById('cartform').submit();\" class=\"btn btn-1 btn-block big\">{{ 'general.cart_info.checkout' | t }}</a>";
但是这个网站不起作用。这是现在的样子:
jQuery('<div class="action"><button class="btn btn-default" onclick="window.location=\'/checkout\'">{{ 'general.header.cart_info.checkout' | t }}</button></div>').appendTo(cart_summary);
这就是我想要做的:
jQuery('<div class="action"><a href="/checkout\" id="checkout-link" class="btn btn-default" onclick=\"ga(function (tracker) {var linkerParam = tracker.get('linkerParam'); document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';}); document.getElementById('cartform').submit();\">{{ 'general.header.cart_info.checkout' | t }}</button></div>').appendTo(cart_summary);
我也试着做这个:
$(document).ready(function() {
$("a#checkout-link").each(function() {
var text = $(this).text();
var thisEvent = $(this).attr("onclick"); // grab the original onclick event
$(this).click(function(event) { // when someone clicks these links
event.preventDefault(); // don't open the link yet
ga(function (tracker) {var linkerParam = tracker.get('linkerParam');
document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';});
document.getElementById('cartform').submit();
setTimeout(function() { // now wait 300 milliseconds...
eval(thisEvent); // ... and continue with the onclick event
},300);
});
});
});
所有这些方法都行不通。我知道我在代码方面是菜鸟,但也许有人可以帮助我?
那么你想在页面被重定向之前执行那个 ga 函数吗?如果是这样,请尝试创建一个简单的函数来执行您想要执行的操作:
function saveLinkerParam(){
ga(function (tracker) {var linkerParam = tracker.get('linkerParam'); document.cookie = '_shopify_ga=' + linkerParam + '; ' + 'path=/';});
}
然后在已经存在的onclick handler中执行它(只是在window.location改变之前:
jQuery('<div class="action"><button class="btn btn-default" onclick="saveLinkerParam();window.location=\'/checkout\' + ">{{ 'general.header.cart_info.checkout' | t }}</button></div>').appendTo(cart_summary);
(您不必创建新函数 saveLinkerParam,但我认为它使代码更具可读性)
我还没有尝试实际执行这段代码,所以如果您遇到任何语法错误,请告诉我。顺便说一句,我认为您尝试的代码的问题可能是语法,更准确地说,当您在 jQuery 函数中连接文本和变量时。