您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Page => AJAX Page
- // ==UserScript==
- // @name AjaxPipeHelper
- // @author -
- // @namespace AjaxPipeHelper - Scripts
- // @description Page => AJAX Page
- // @license Creative Commons Attribution License
- // @version 0.1
- // @include *://old.reddit.com/*
- // @grant none
- // @run-at document-start
- // ==/UserScript==
- function GM_getParentByTagName(el, tagName) {
- tagName = tagName.toLowerCase();
- if (el.tagName.toLowerCase() == tagName) {
- return el;
- }
- while (el && el.parentNode) {
- el = el.parentNode;
- if (el.tagName && el.tagName.toLowerCase() == tagName) {
- return el;
- }
- }
- return "undefined";
- }
- function parseResponseHeaders(headerStr) {
- var headers = {};
- if (!headerStr) {
- return headers;
- }
- var headerPairs = headerStr.split('\u000d\u000a');
- for (var i = 0, len = headerPairs.length; i < len; i++) {
- var headerPair = headerPairs[i];
- var index = headerPair.indexOf('\u003a\u0020');
- if (index > 0) {
- var key = headerPair.substring(0, index);
- var val = headerPair.substring(index + 2);
- headers[key.toLowerCase()] = val;
- }
- }
- return headers;
- }
- function ajaxpiperenabler() {
- document.addEventListener("click", onclickact);
- window.addEventListener("popstate", poppye);
- function poppye() {
- ajaxpipefetcher(location.href)
- }
- function ajaxpipefetcher(currenttag) {
- GM_xmlhttpRequest({
- method: "GET",
- url: currenttag,
- stillpagefilter: true,
- onload: function (response) {
- var responseheaders = parseResponseHeaders(response.responseHeaders)
- if (responseheaders['content-type'].indexOf('text/html') != -1) {
- document.body.innerHTML = response.responseText;
- } else {
- location = currenttag
- }
- scrollTo(0, 0)
- window.history.pushState(null, null, currenttag);
- }
- });
- }
- function onclickact(e) {
- //re = "(?:javascript|.(?:jpe?g|gif|png|js|css|json|exe|zip|rar|iso|7z|ahk))";
- var currenttag = GM_getParentByTagName(e.target, "a")
- if (e.button === 0) {
- if ((currenttag.nodeName == "A") && (currenttag.href.indexOf(location.hostname) != -1) && (!currenttag.getAttribute("onclick")) && (!currenttag.getAttribute("data-toggle"))) {
- e.preventDefault();
- ajaxpipefetcher(currenttag.href)
- }
- }
- }
- }
- ajaxpiperenabler()