Spark Standalone Master App Proxy Fix

Fix links to Spark jobs descriptions and nav bar in Spark Standalone Master when spark.ui.reverseProxy=true.

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name         Spark Standalone Master App Proxy Fix
// @name:zh-CN   Spark Standalone Master 反向代理链接修复
// @namespace    https://rabit.pw/
// @version      0.2
// @description  Fix links to Spark jobs descriptions and nav bar in Spark Standalone Master when spark.ui.reverseProxy=true.
// @description:zh-CN 修复Spark Standalone模式中,启用了`spark.ui.reverseProxy=true`之后,在任务详情页面,任意链接点击后跳转回首页的问题。
// @author       ttimasdf
// @match        http://*/proxy/*
// @grant        none
// @run-at       document-end
// ==/UserScript==

// ref: https://stackoverflow.com/a/17599814/1043209
(function() {
    'use strict';

    var imgs = document.getElementsByTagName("img");//"/static/spark-logo-77x50px-hd.png"

    // Check whether this is Spark Master page
    for (var i = 0, found = false; i < imgs.length && i < 3; i++) {
        if (imgs[i].getAttribute("src") == "/static/spark-logo-77x50px-hd.png") {
            found = true;
        }
    }
    if (!found) return;

    // Extract links
    var links = Array.from(document.links);
    links.push.apply(links, document.getElementsByTagName("a"));
    // get link to current page and extract http://xxxx/proxy/app-xxxx part
    var root = /^.*proxy\/[^\/]*/.exec(window.location.href)[0];
    // console.log(links);

    var i;
    for (i = 0; i < links.length; i++ ) {
        var link = links[i].getAttribute('href');
        if (/^\/(?!proxy).+/.test(link)) {
            console.log(link, "=>", root + link);
            links[i].setAttribute("href", root + link);
        }
    }
})();