Javascript 从页面上的元素抓取URL以进行Bitly URL缩短
我在shopify工作——试图在客户端完成这项工作 我正在生成一个URL(基于购物车中当前的项目),该URL根据项目ID#将项目添加到购物车中 我在为我们的销售团队打造这个小东西,因此,他们可以为客户启动订单,并通过URL将该安排发送给某人-现在在shopify中,如果您按照他们的方式进行,则会将客户带到付款窗口,而他们无法编辑该订单-这样,我们只会在购物车中发送一个安排,他们可以在实际付款前进行调整 所以现在,这个url变得非常长,这取决于购物车中有多少物品,我想使用bit.ly根据生成的url创建一个短url-我现在有了它,这样它就可以对url进行编码,这样里面就不会有任何奇怪的字符-但是看看bitly api文档,大多数示例都是通用的,而堆栈溢出的其他情况似乎都是针对它们的问题-- 也许这是不可能的?感谢您花时间阅读本文,如果有任何人有任何建议,或者如果您认为我只是错过了一大块明显的东西,请随时告诉我。我可以为我目前拥有的东西提供代码,如果这能让我更容易理解我正在尝试做什么 该页面外观的屏幕截图 ----在下面添加代码----Javascript 从页面上的元素抓取URL以进行Bitly URL缩短,javascript,shopify,bit.ly,Javascript,Shopify,Bit.ly,我在shopify工作——试图在客户端完成这项工作 我正在生成一个URL(基于购物车中当前的项目),该URL根据项目ID#将项目添加到购物车中 我在为我们的销售团队打造这个小东西,因此,他们可以为客户启动订单,并通过URL将该安排发送给某人-现在在shopify中,如果您按照他们的方式进行,则会将客户带到付款窗口,而他们无法编辑该订单-这样,我们只会在购物车中发送一个安排,他们可以在实际付款前进行调整 所以现在,这个url变得非常长,这取决于购物车中有多少物品,我想使用bit.ly根据生成的ur
//获取购物车
if(typeof Shopify=='undefined')var Shopify={};
Shopify.cart={cart|json};
Shopify.idsIntranet=[];
Shopify.quanitranet=[];
//我们要把网址放在哪里
var cartURL=document.getElementById('cart_url');
//对于Shopify购物车中的每一项-推送到IDSENTAVT并将ID打印到购物车url
对于(var i=0;iSo),您不知道如何调用bit.ly api来生成url?为什么不在保存url的站点上创建自己的密钥?我可以阅读文档,但它并没有帮助我了解如何执行我尝试执行的操作。我不知道如何告诉它“使用这个动态生成的url,然后在此基础上生成一个简短的url”,这样您就生成了一个api密钥,并使用该url作为参数调用服务。很抱歉,这对我没有任何帮助。我已经有了一个由bitly分配的api密钥…所以我已经准备好了
// get the cart
if (typeof Shopify === 'undefined') var Shopify = {};
Shopify.cart = {{ cart | json }};
Shopify.idsInCart = [];
Shopify.quanInCart = [];
//where we gonna put the url
var cartURL = document.getElementById('cart_url');
// for every item in Shopify Cart - push to idsInCart and print the IDs to the cart url
for (var i=0; i<Shopify.cart.items.length; i++) {
Shopify.idsInCart.push(Shopify.cart.items[i].id);
cartURL.innerHTML += 'id[]=' + Shopify.idsInCart[i] + '&';
}
// get the div with cartURLform as an id
var longUrlNode = document.getElementById('cartURLform'),
// grab the .textContent from that div
textContent = longUrlNode.textContent;
//
var uri = longUrlNode.textContent;
var res = encodeURI(uri);
// Copy to clipboard example
document.querySelector("#qlink").onclick = function() {
// Select the content
document.querySelector("#qlink").select();
// Copy to the clipboard
document.execCommand('copy');
};
(function(long_url,callback){
bi = new URL("https://api-ssl.bitly.com/v3/shorten?");
var params = [
"login=__obviously__",
"domain=bit.ly",
"apiKey=__obviously__",
"longUrl="+ encodeURIComponent(long_url)
]
bi.search = "?"+params.join('&')
var xhr = new XMLHttpRequest();
xhr.onreadystatechange=function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
var res = JSON.parse(xhr.responseText);
callback(res["data"]["url"]);
// document.getElementById("qlink").value = JSON.parse(xhr.responseText);
} else {
alert('There was a problem with the request.');
}
}
}
xhr.open("GET",bi.toString());
xhr.send(null)
})(res,function(a){
// prompt("hello", a);
document.getElementById("qlink").value = a;
});