Skip to content

Instantly share code, notes, and snippets.

@sivagao
Created October 26, 2012 22:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sivagao/3961850 to your computer and use it in GitHub Desktop.
Save sivagao/3961850 to your computer and use it in GitHub Desktop.
javascript , douban & lib info mashup , which use the chrome plugin's permissions to solve the cross origin(跨域问题)
function check() {
var a = location.href;
a = a.search("book.douban.com/subject");
if(a == -1) {
checkJun()
} else {
checkDouban()
}
}
function checkDouban() {
var b = document.getElementById("wrapper");
var b = b.childNodes;
var e;
for(var c = 0; c < b.length; c++) {
if(String(b[c].tagName).toLowerCase() == "h1") {
b = b[c];
break
}
}
b = b.getElementsByTagName("span")[0];
var d = b.childNodes[0].nodeValue;
var a = "http://202.116.13.244/search*chx/?searchtype=X&searcharg=+" + d + "&x=0&y=0";
xmlHttp = new XMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
handleString(xmlHttp.responseText, d)
} else {
rapWrongToDouBan()
}
}
};
xmlHttp.open("get", a, true);
xmlHttp.send(null)
}
function handleString(g, e) {
var b = g.search("\u8bf7\u586b\u8868\u3001\u9009\u62e9\u9650\u5236\u8303\u56f4\u3001\u7136\u540e\u8f7b\u70b9\u63d0\u4ea4\u3002");
if(b == -1) {
var d = g;
var f = g.search("<!--{nohitmsg}-->");
g = g.slice(f, g.length);
var a = g.search("</span>");
g = g.slice(0, a);
f = g.search("<a");
a = g.search("</a>");
g = g.slice(f, a);
f = g.lastIndexOf(">");
g = g.slice(f + 1, g.length);
if(g != e) {
g = d;
if(g.search('id="items_for_sms"') != -1) {
f = g.search('id="items_for_sms"');
f = g.lastIndexOf("<div", f);
g = g.slice(f, g.length);
f = g.search("<table");
a = g.search("</table>");
g = g.slice(f, a);
g += "</table>";
rapRigToDouban(g);
return
}
rapWrongToDouBan();
return
}
g = d;
f = g.search("<!-- This File Last Changed: 01 July 2008 -->");
g = g.slice(f, g.length);
f = g.search("<table");
a = g.search("</table>");
g = g.slice(f, a);
g += "</table>";
rapRigToDouban(g);
var c = document.getElementById("icrt_block").getElementsByTagName("img")[0];
d = c.src;
d = String(d).slice(String("http://book.douban.com").length);
c.src = "http://202.116.13.244" + d
} else {
rapWrongToDouBan()
}
}
function rapRigToDouban(e) {
var d = document.createElement("div");
d.innerHTML = e;
d.innerHTML = "<div id='icrt_block'><p class='icrt_block_title'>\u66a8\u5927\u56fe\u4e66\u9986\u54ea\u91cc\u6709\u8fd9\u672c\u4e66\uff1f</p>" + e + "</div>";
var g = document.getElementById("interest_sect_level");
g.innerHTML = d.innerHTML + g.innerHTML;
document.getElementById("icrt_block").className = "icrt_style";
var c = document.getElementById("icrt_block").getElementsByTagName("a");
for(var a = 0; a < c.length; a++) {
if(c[a].href.search("http://book.douban.com") != -1) {
var b = c[a].href;
b = String(b).slice(String("http://book.douban.com").length);
c[a].href = "http://202.116.13.244" + b
}
}
var f = document.getElementById("icrt_block").getElementsByTagName("img");
for(var a = 0; a < f.length; a++) {
f[a].style.display = "none"
}
c = document.getElementById("icrt_block").getElementsByTagName("a");
for(var a = 0; a < c.length; a++) {
c[a].setAttribute("target", "_blank")
}
}
function rapWrongToDouBan() {
var c = document.getElementById("interest_sect_level");
c.innerHTML = "<div id='icrt_block' class='icrt_style'><p class='icrt_block_title'>\u66a8\u5927\u56fe\u4e66\u9986\u6ca1\u6709\u8fd9\u672c\u4e66\uff01</p><a class='icrt_go' href='http://lib.jnu.edu.cn/users/goBookOpac.action'>\u628a\u8fd9\u672c\u4e66\u8350\u8d2d\u7ed9\u66a8\u5927\u56fe\u4e66\u9986</a></div>" + c.innerHTML;
var b = document.getElementById("icrt_jnu_block").getElementsByTagName("a");
for(var a = 0; a < b.length; a++) {
b[a].setAttribute("target", "_blank")
}
}
function checkJun() {
var f = document.body.innerHTML;
var e = f.search("<!-- next row for fieldtag=t -->");
f = f.slice(e, f.length);
e = 0;
var a = f.search("</tr>");
f = f.slice(e, a);
e = f.search("</td>");
f = f.slice(e + String("</td>").length, f.length);
e = f.search("<strong>");
a = f.lastIndexOf("</strong>");
f = f.slice(e, a) + "</strong>";
var c = document.createElement("div");
c.innerHTML = "<div style='display:none;'>" + f + "</div>";
f = c.innerText;
var d = f;
d = d.slice(d.lastIndexOf(">") + 1, d.length);
var b = "http://book.douban.com/subject_search?search_text=" + d + "&cat=1003";
xml = new XMLHttpRequest();
xml.onreadystatechange = function() {
if(xml.readyState == 4) {
if(xml.status == 200) {
jnuhandleString(xml.responseText, d)
} else {
alert("god\u8bf7\u6c42\u5931\u8d25")
}
}
};
xml.open("get", b, true);
xml.send(null)
}
function jnuhandleString(j, k) {
var c = document.createElement("div");
c.innerHTML = "<div>" + j + "</div>";
var l = j.search("<body");
var f = j.search("</body>");
j = j.slice(l, f);
l = j.search(">");
j = j.slice(l + 1, j.length);
c.innerHTML = "<div style='display:none;'>" + j + "</div>";
document.body.appendChild(c);
var e = document.getElementById("content").getElementsByClassName("article")[0].getElementsByTagName("table");
for(var g = 0; g < e.length; g++) {
var b = e[g].getElementsByTagName("td")[1].getElementsByTagName("a")[0];
var h = b.innerText;
if(h == k) {
console.log("aimTitle=", h);
console.log("bookName=", k);
e = e[g];
break
}
}
var d = document.getElementById("ml");
if(e.innerHTML == undefined) {
e.innerHTML = "<div id='icrt_jnu_block'>\u6ca1\u6709\u5728\u8c46\u74e3\u4e0a\u627e\u5230\u4e0e\u672c\u4e66\u540d\u5b8c\u5168\u5339\u914d\u7684\u4e66!</div>"
}
console.log(e.innerHTML);
d.innerHTML = "<div id='icrt_jnu_block' class='icrt_jnu_block' style='padding-top:10px;padding-bottom:10px;margin:15px 0px;border-top:1px dotted gray;border-bottom: 1px dotted gray;'><p>\u8fd9\u672c\u4e66\u5728\u8c46\u74e3\u4e0a\u60c5\u51b5:</p><table>" + e.innerHTML + "</table></div>" + d.innerHTML;
var a = document.getElementById("icrt_jnu_block").getElementsByTagName("a");
for(var g = 0; g < a.length; g++) {
a[g].setAttribute("target", "_blank")
}
}
check();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment