我正在使用bit.ly 网址缩短服务缩短发送到“在 Twitter 上分享”功能的某些 URL。我想仅在用户实际按下共享按钮时加载 bit.ly url(由于 bit.ly 的最多 5 个并行请求限制)。Bit.ly 的 REST API返回带有缩短的 url 的 JSON 回调,这使得整个场景异步。
我已尝试以下方法来停止单击事件,并等待 JSON 调用返回值,然后再启动单击。
我在 jQuery(document).ready() 中有以下简化代码:
更新了代码(过于简化)!
jQuery("#idofaelement").click(function(event) {
event.preventDefault(); //stop the click action
var link = jQuery(this);
bitlyJSON(function(shortUrl) {
link.attr("href", function() {
//process shortUrl
//return finalized url;
}).unbind().click();
});
});
下面的代码可以处理稍微缩短的情况(效果很好):
function bitlyJSON(func) {
//
// build apiUrl here
//
jQuery.getJSON(apiUrl, function(data) {
jQuery.each(data, function(i, entry) {
if (i == "errorCode") {
if (entry != "0") {
func(longUrl);}
} else if (i == "results") {
func(entry[longUrl].shortUrl);}
});
});
} (jQuery)
href 的值发生了变化,但最终的 .click() 事件永远不会被触发。在为 href 定义静态值时,这可以正常工作,但在使用异步 JSON 方法时则不行。
正如您概述自己:
event.preventDefault(); //stop the click action
这意味着,浏览器不会访问该 URL,如果您希望实际转到长网址位置,只需执行以下操作:
document.location.href = longurl;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)