jQuery即时URL缩短

我正在寻找一个即时的URL缩短器,就像tweetdeck的工作方式一样。 我发现了很多jQuery和一般的javascript插件,当按下按钮时,它会通过缩进服务(例如bit.ly)运行它。 但是,我还没能找到一个在飞行中做它的人。 我的第一个问题是,这已经存在于某个地方吗? 其次,如果没有,那么识别需要在文本框中缩短的URL的最佳方法是什么? 我的想法:

  1. 在该文本区域的onKeyUp上运行查找http的文本
  2. 如果找到了抓取整个URL(我如何确定结束?可以是句号,逗号,空格等…)
  3. 确保该URL不是bit.ly URL
  4. validationURL(发出请求并确保http响应不是错误,bit.ly已经这样做了吗?)
  5. 如果有效,请将URL发送到bit.ly的API并获取响应
  6. 将长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

我找到了你的post,同时寻找类似的东西,最终只写了一个jQuery插件,提供(至少部分)你正在寻找的东西。

我在Bitbucket上的jQuery Url Shortener

这是一个非常简单的插件; 我不需要缩短用户的url,所以我在缩短它之前没有任何长度检查或url测试,尽管我并不反对添加这些类型的function。

只是觉得你可能觉得它很有用。

至于识别文本框中的URL,我建议使用RegEx来匹配url 。