【问题标题】:Greasemonkey script testfor url & add parameterGreasemonkey 脚本测试 url 并添加参数
【发布时间】:2017-04-03 18:31:09
【问题描述】:

我想检查网站 youtube.com,如果它是一个视频网站(包括 watch?v=),然后将 &rel=0 添加到 URL。伪代码:

if url = youtube.com/watch?v=* |then newurl = url + &rel=0

更多示例:

  • youtube.com -> youtube.com
  • youtube.com/feed/subscriptions -> youtube.com/feed/subscriptions
  • youtube.com/watch?v=ikIXmUUumjg -> youtube.com/watch?v=ikIXmUUumjg&rel=0
  • youtube.com/watch?v=ikIXmUUumjg&t=0 -> youtube.com/watch?v=ikIXmUUumjg&t=0s&rel=0

【问题讨论】:

    标签: youtube greasemonkey userscripts


    【解决方案1】:

    诀窍是使用现代 javascript 替换 URL 而无需重定向。第二个技巧是要知道 window.location 包含已解析的 URL,分为多个部分(主机名、路径、查询参数...)。

    // ==UserScript==
    // @name        window rel youtube
    // @namespace   util
    // @match       *://www.youtube.com/*
    // @version     1
    // @grant       none
    // ==/UserScript==
    const watchRegex = /watch\?v=/i
    if(window.location.href.indexOf("watch?v=")!=-1 && window.location.search.indexOf("rel=0")==-1) {
        console.log("changing url");
        var baseURL = window.location.origin + window.location.pathname+window.location.search+"&rel=0"+window.location.hash;
        window.history.pushState({"pageTitle":document.title},"", baseURL);
    }
    else {
        console.log("No change in url");
    }
    

    【讨论】:

    • 无法试用 rn。 Synergy install 使我的电脑蓝屏引导循环
    • @RasmusA 你不需要让我知道。当您有时间和一台正常工作的 PC 时对其进行测试,然后在有问题时发表评论,如果可行则接受答案。
    • 它不起作用,如果你有广告屏蔽,你知道 youtube 最近做了什么,然后播放 1 分钟左右的广告,它触发了
    • 修复它, const watchRegex = /watch\?v=/i;由于某种原因需要最后一个分号,tampermonkey 甚至出错
    • @rasmusa 我一到电脑就会编辑它。感谢您报告错误。不过它对我有用,分号在 JS 中并不总是强制性的。
    猜你喜欢
    • 1970-01-01
    • 2014-09-16
    • 2012-05-27
    • 2015-10-24
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多