Как перенаправить из нескольких возможных подпутей через Userscript (Переключить язык / скрипт Википедии)? - PullRequest
1 голос
/ 04 мая 2019

Я пытаюсь перенаправить сербскую Википедию с кириллицы на латиницу.

Итак, проблема в том, что когда вы перейдете к какой-то статье в сербской Википедии, вы получите либо кириллицу, латиницу или смешанный скрипт.Я хочу, чтобы это было только на латинице.

Например, ссылка по умолчанию:
https://sr.wikipedia.org/wiki/%D0%A1%D1%80%D0%B1%D0%B8%D1%98%D0%B0

Я хочу, чтобы это было на латинице, поэтому оно станет:
https://sr.wikipedia.org/sr-el/%D0%A1%D1%80%D0%B1%D0%B8%D1%98%D0%B0

(см. Разницу от /wiki/ до /sr-el/?)

Существует также еще два возможных типа ссылки (подпути):

Моя идея - сделать так, чтобы каждый (wiki, sr и sr-el) перенаправлял на sr-el.

Я пытался сделатьэто так, но у меня нет результата:

// ==UserScript==
// @name     sr wiki latin
// @version  1
// @include     https://sr.wikipedia.org*
// @include     http://sr.wikipedia.org*
// @grant    none
// ==/UserScript==

var url = window.location.host;

if (url.match("sr.wikipedia.org/sr-el") === null) {
    url = window.location.href;
    if  (url.match("//sr.wikipedia.org/wiki") !== null){
        url = url.replace("//sr.wikipedia.org/wiki", "//sr.wikipedia.org/sr-el");
    } elseif (url.match("//sr.wikipedia.org/sr-ec") !== null){
        url = url.replace("//sr.wikipedia.org/sr-ec", "//sr.wikipedia.org/sr-el");
    } elseif (url.match("//sr.wikipedia.org/sr") !== null){
        url = url.replace("//sr.wikipedia.org/sr", "//sr.wikipedia.org/sr-el");
    } else
    {
        return;
    }

    console.log(url);
    window.location.replace(url);
}

Вы можете мне помочь?

1 Ответ

0 голосов
/ 04 мая 2019

Этот код пытается проверить частичный путь с location.host.Это не сработает.
Кроме того, elseif недопустимо в JavaScript.Это будет else if.

Использовать стандартный шаблон перенаправления :

// ==UserScript==
// @name        Wikipedia Serbian, always switch to latinic script
// @match       *://sr.wikipedia.org/*
// @run-at      document-start
// @grant       none
// ==/UserScript==
/* eslint-disable no-multi-spaces */

var oldUrlPath  = location.pathname;
if ( ! oldUrlPath.includes ("/sr-el/") ) {
    //-- Get and test path prefix...
    var pathParts = oldUrlPath.split ("/");
    if (pathParts.length > 1) {
        switch (pathParts[1]) {
            case "sr":
            case "sr-ec":
            case "wiki":
                pathParts[1] = "sr-el";
                break;
            default:
                // No action needed.
                break;
        }
    }
    var newPath = pathParts.join ("/");
    var newURL  = location.protocol + "//"
                + location.host
                + newPath
                + location.search
                + location.hash
                ;
    console.log ("Redirecting to: ", newURL);
    location.replace (newURL);
}
...