Skip to content

Instantly share code, notes, and snippets.

@lmmx
Last active August 29, 2015 14:18
Show Gist options
  • Save lmmx/96d553645d0dcea0efce to your computer and use it in GitHub Desktop.
Save lmmx/96d553645d0dcea0efce to your computer and use it in GitHub Desktop.
Cross-domain (AJAX) CrossRef
doiCites = {};
function doiInfo(doi) {
var doienc = encodeURIComponent(doi);
var doiXHR;
window.XMLHttpRequest ? doiXHR=new XMLHttpRequest() : doiXHR=new ActiveXObject("Microsoft.XMLHTTP");
doiXHR.addEventListener('load', function(){
if (doiXHR.readyState==4 && doiXHR.status==200){
var doi_resp = JSON.parse(doiXHR.responseText)[0];
var authors = doi_resp.fullCitation.replace(/, \d{4}, .*$/, '')
.split(',');
var auths = authors.length;
if (auths == 1) {
var auth_str = authors[0];
} else if (auths == 2) {
var auth_str = authors.join(' &');
} else if (auths == 3) {
var auth_str = authors[0] + ',' + authors[1] + ' &' + authors[2];
} else if (auths > 3) {
var auth_str = authors[0] + ' et al.';
} else break; // don't accept author-less entries
var doi_cite = auth_str
+ ' ('
+ doi_resp.year
+ ') '
+ doi_resp.title;
doiCites[doi] = doi_cite;
}
});
doiXHR.open('GET', 'http://search.crossref.org/dois?q=' + doienc, true);
doiXHR.send();
}
// doiInfo('10.1002/bies.201000071');
// doiCites['10.1002/bies.201000071']
doiTitles = {};
function stripHTML(str)
{
var tmp = document.createElement("DIV");
tmp.innerHTML = str;
return tmp.textContent || tmp.innerText || "";
}
function doiInfo(doi) {
var doienc = encodeURIComponent(doi);
var doiXHR;
window.XMLHttpRequest ? doiXHR=new XMLHttpRequest() : doiXHR=new ActiveXObject("Microsoft.XMLHTTP");
doiXHR.addEventListener('load', function(){
if (doiXHR.readyState==4 && doiXHR.status==200){
var doi_resp = JSON.parse(doiXHR.responseText)[0];
var doi_title = stripHTML(doi_resp.fullCitation)
.replace(/, \d{4}, '/, ' (' + doi_resp.year + ') ')
.replace(/', /, '. ')
.replace(/, vol\. /, ', ')
.replace(/, no\. /, ', ')
.replace(/, pp\. /, ', ')
.replace(/, p\. /, ', ');
doiTitles[doi] = doi_title;
}
});
doiXHR.open('GET', 'http://search.crossref.org/dois?q=' + doienc, true);
doiXHR.send();
}
// doiInfo('10.1002/bies.201000071');
// doiTitles['10.1002/bies.201000071']
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment