Greasemonkey / Tampermonkey脚本重定向到双重修改的URL

时间:2018-04-04 18:54:04

标签: javascript url greasemonkey userscripts tampermonkey

目标网页的网址为:ouo.io/tLnpEc.html

我想将网址更改为:ouo.press/tLnpEc

即:.io.press并删除.html

我已经有了这个但是它没有用(它重定向到ouo.press但仍然没有删除.html):

var url = window.location.host;

if (url.match("//ouo.io") === null) {
    url = window.location.href;
    if  (url.match("//ouo.io") !== null){
        url = url.replace("//ouo.io", "//ouo.press");
    } else if (url.match("/*.html") !== null){
        url = url.replace("/*.html", " ");
    } else {
        return;
    }
    console.log(url);
    window.location.replace(url);
}

我希望有人可以帮助解决这个问题。

1 个答案:

答案 0 :(得分:1)

相关:Greasemonkey to redirect site URLs from .html to -print.html?(以及其他几个)。

关键点:

  1. 检查页面位置以确保您尚未重定向;避免无限重定向循环。
  2. 不要在.href上操作。这将导致各种引用,搜索等链接和重定向的副作用和错误触发。
  3. 使用@run-at document-start减少延迟和烦恼"闪烁"。
  4. 这是执行这些网址更改和重定向的完整脚本

    // ==UserScript==
    // @name     _Redirecy ouo.io/...html files to ouo.press/... {plain path}
    // @match    *://ouo.io/*
    // @run-at   document-start
    // @grant    none
    // ==/UserScript==
    
    //-- Only redirect if the *path* ends in .html...
    if (/\.html$/.test (location.pathname) ) {
        var newHost     = location.host.replace (/\.io$/, ".press");
        var plainPath   = location.pathname.replace (/\.html$/, "");
        var newURL      = location.protocol + "//" +
            newHost                  +
            plainPath                +
            location.search          +
            location.hash
        ;
        location.replace (newURL);
    }