CNKI 中国知网 PDF 全文下载

参见 http://blog.yuelong.info/post/cnki-pdf-js.html

目前為 2016-04-17 提交的版本,檢視 最新版本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @id             CNKI-PDF
// @name           CNKI 中国知网 PDF 全文下载
// @version        1.2.1
// @namespace      http://yuelong.info
// @author         YUE Long
// @description    参见 http://blog.yuelong.info/post/cnki-pdf-js.html
// @include        http://*.cnki.net/*
// @include        http://*.cnki.net.*/*
// @run-at         document-idle
// ==/UserScript==

var allLis, thisLi, newLi, aPDF, allLinks, thisLink, pageType;
pageType = true;

allLinks = document.evaluate(
	'//a[@href]',
	document,
	null,
	XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
	null);

allLis = document.evaluate(
    "//li[@class]",
	document,
	null,
	XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
	null);

if (allLis) {
	for (var i = 0; i < allLis.snapshotLength; i++) {
		thisLi = allLis.snapshotItem(i);
		if (thisLi.getAttribute("class").indexOf("readol") !== -1) {
			pageType = false;
			newLi = document.createElement('li');
			newLi.setAttribute("class","pdf");
			aPDF='<a target="_blank" href="' + thisLi.firstChild.href.replace("&dflag=readonline","&dflag=pdfdown") +'">PDF下载</a>';
			newLi.innerHTML=aPDF;
			thisLi.parentNode.insertBefore(newLi, thisLi.nextSibling);
		}
		if (thisLi.getAttribute("class").indexOf("cajNew") !== -1) {
			pageType = false;
		}
	}
}

if (pageType) {
	for (var i = 0; i < allLinks.snapshotLength; i++) {
		thisLink = allLinks.snapshotItem(i);
		if (thisLink.href && thisLink.href.indexOf("download.aspx?filename=") != -1 && thisLink.href.indexOf("&dflag") == -1) {
		thisLink.href = thisLink.href + "&dflag=pdfdown";}
	}
};