-
Notifications
You must be signed in to change notification settings - Fork 0
/
permalink.js
46 lines (35 loc) · 1.24 KB
/
permalink.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/* Exemple:
var loadConfig = Permalink.load();
console.log( loadConfig );
var config = loadConfig || {"hello":"World","n":9}
var pl = Permalink.get(config);
console.log(pl);
Permalink.getTiny( config, function(tinyurl){
var a = document.getElementById('link');
a.href=tinyurl;
a.innerHTML = tinyurl;
});*/
var Permalink = {
load: function() {
var s = window.location.search.substr(1);
if( s.substr(0,10) != "permalink=" ) return null;
return YAHOO.lang.JSON.parse(window.decodeURIComponent(s.substr(10)));
},
get: function(config) {
var l = window.location, pl = YAHOO.lang.JSON.stringify(config);
return l.protocol+"//"+l.host+l.pathname+"?permalink="+pl;
},
getTiny: function(config, success) {
var longURL = this.get(config),
ud = 'pl'+(Math.random()*100).toString().replace(/\./g,''),
API = 'http://json-tinyurl.appspot.com/?url=',
url = API + encodeURIComponent(longURL) + '&callback=' + ud;
window[ud]= function(o){ success&&success(o.tinyurl); };
document.getElementsByTagName('body')[0].appendChild((function(){
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = url;
return s;
})());
}
};