jQuery即时URL缩短
我正在寻找一个即时的URL缩短器,就像tweetdeck的工作方式一样。 我发现了很多jQuery和一般的javascript插件,当按下按钮时,它会通过缩进服务(例如bit.ly)运行它。 但是,我还没能找到一个在飞行中做它的人。 我的第一个问题是,这已经存在于某个地方吗? 其次,如果没有,那么识别需要在文本框中缩短的URL的最佳方法是什么? 我的想法:
- 在该文本区域的onKeyUp上运行查找http的文本
- 如果找到了抓取整个URL(我如何确定结束?可以是句号,逗号,空格等…)
- 确保该URL不是bit.ly URL
- validationURL(发出请求并确保http响应不是错误,bit.ly已经这样做了吗?)
- 如果有效,请将URL发送到bit.ly的API并获取响应
- 将长URL替换为文本区域中的短URL。
思考?
以下是如何使用Bitly API和jQuery获取缩短的URL的示例:
function get_short_url(long_url, login, api_key, func) { $.getJSON( "http://api.bitly.com/v3/shorten?callback=?", { "format": "json", "apiKey": api_key, "login": login, "longUrl": long_url }, function(response) { func(response.data.url); } ); }
以下代码可用于获取简短的URL:
/* Sign up for Bitly account at https://bitly.com/a/sign_up and upon completion visit https://bitly.com/a/your_api_key/ to get "login" and "api_key" values */ var login = "LOGIN_HERE"; var api_key = "API_KEY_HERE"; var long_url = "http://www.kozlenko.info"; get_short_url(long_url, login, api_key, function(short_url) { console.log(short_url); });
我猜Bitly的API略有改变。 您现在只需要一个访问令牌来请求一个简短的URL。
按照最佳做法 ,我创建了以下仅限Javascript的代码段:
getShortUrl: function(url, callback) { var accessToken = '___YOUR_ACCESS_TOKEN___'; var url = 'https://api-ssl.bitly.com/v3/shorten?access_token=' + accessToken + '&longUrl=' + encodeURIComponent(url); $.getJSON( url, {}, function(response) { if(callback) callback(response.data.url); } ); },
飞行位很难变得可靠和快速。
人们不会在大多数时间键入http甚至www。
最后,就像你说的那样,很难确定url是否包含空格或者更糟,因为用户没有放入空格,所以会遇到下一句话。
如果人们需要在事后更改url,因为他们键入的是http://stakoverflow.com/而不是https://stackoverflow.com/ ?
我认为最好的解决方案是在文本编辑器上添加一个“插入缩短的URL”按钮,让人们可以做到这一点。 或者,在发布post时,在服务器端执行此操作。
您还可以在服务器上生成带有php和curl的短url,这样您就不必在网页中公开您的API密钥:
然后在您的网页中,代码应该是这样的:
//the long url that you want to shorten var longUrl = escape(window.location.href) $.ajax({ url : "php/getShortUrl.php",//this is the php script above dataType : "json", type : "POST", data : { url : longUrl }, success : function(data) { if(data.status_txt === "OK"){ shortUrl = data.data.url; } }, error : function(xhr, error, message) { //no success, fallback to the long url shortUrl = longUrl } });
有关更多详细信息,请参阅bitly API
为什么不对Bit.ly API执行jQuery POST? http://blog.themeforest.net/tutorials/creating-an-ajax-web-app-using-the-bitly-api/
我找到了你的post,同时寻找类似的东西,最终只写了一个jQuery插件,提供(至少部分)你正在寻找的东西。
我在Bitbucket上的jQuery Url Shortener
这是一个非常简单的插件; 我不需要缩短用户的url,所以我在缩短它之前没有任何长度检查或url测试,尽管我并不反对添加这些类型的function。
只是觉得你可能觉得它很有用。
至于识别文本框中的URL,我建议使用RegEx来匹配url 。