你好吗? 我到处都看过SO和Google(也向freenode #javascript寻求帮助),到目前为止一切顺利。也许有人可以帮助我。
我想做什么-我正在使用ClickFunnels(使用RoR构建),我需要从Cookie中获取一些值,并将它们作为按钮内的查询字符串链接的参数传递,图片。
我对javascript很陌生,所以我可能缺少明显的东西,但是freenode上的人们无法解决我的问题。 以下代码在 Google Chrome版本68.0.3440.106(正式版)(64位)上可以正常工作。这是我可以按预期运行此代码的唯一版本。
在最新版本的Google Chrome(台式机和移动版)和Firefox上,该代码无法正常运行。
// Try to use the Cookie stored data to switch &s1 e &aff_sub from CF Button href
function getCookie()
{
// store cookie in var
var insCookie = document.cookie;
// split on ";"
var cookieArr = insCookie.split(";");
// creates the Obj
var cookieObj = {}
// iterates through the resulting array
// for each arr el => trim() => split on "=" => store each key-value pair on an object
for (var i = 0; i < cookieArr.length; i++)
{
// do step 3
//trim
var cookieKV = cookieArr[i];
cookieKV = cookieKV.trim();
// split on "="
var cookieKVArr = cookieKV.split("=");
// store kv on obj
cookieObj[cookieKVArr[0]] = cookieKVArr[1];
}
return cookieObj;
}
// starts to use what we got stored
var obj = getCookie();
var button = document.querySelectorAll("a.elButton");
var my_btn = button[0];
var href = my_btn.href;
// Starts to generate new button url based on cookie data
href = href.replace(/#prod_geo#/g,obj.prod_geo).replace(/#prod_name#/g,obj.prod_name).replace(/#subprod_name#/g,obj.subprod_name).replace(/#offer_name#/g,obj.offer_name).replace(/#offer_device#/g,obj.offer_device);
function ChangeUrl() {
$("a[href*='#prod_geo#']").attr("href",href);
};
var img = document.querySelectorAll("img.elIMG");
var my_img = img[1];
var img_href = my_img.dataset.imagelink;
// Starts to generate new img url based on cookie data
var new_img_href = img_href.replace(/#prod_geo#/g,obj.prod_geo).replace(/#prod_name#/g,obj.prod_name).replace(/#subprod_name#/g,obj.subprod_name).replace(/#offer_name#/g,obj.offer_name).replace(/#offer_device#/g,obj.offer_device);
window.onload = function() {
ChangeUrl();
// change url for the image
my_img.dataset.imagelink = new_img_href;
};
问题-发生的情况是,页面完全加载后,浏览器会自动重定向到按钮/图像内的链接。参数会按原样发送,但我不想自动重定向用户,我只想构建链接,因为一旦用户单击按钮/图像,链接就应该如此。
我的想法-我猜问题出在更改图像上的参数时。如果仅更改按钮上的参数(甚至在代码中不提及图像),浏览器将不会自动重定向。因此,当我操作dataset.imagelink时,我一定做错了。我找不到任何有关此事的信息。
其他注意事项-这是我第一次尝试使用javascript做任何事情,因此请多多包涵。另外,我无法控制html元素的构建方式,因此我只需要处理已有的内容。 最后一件事,如果您需要更多信息,请告诉我。
预先感谢
Crova