为什么隐藏侧边栏的 Greasemonkey JQuery 脚本在 Stack Exchange 网站上有效,但在 Stack Overflow 上无效?
Why does my Greasemonkey JQuery script that hides the sidebar work on Stack Exchange sites but not Stack Overflow?
我被侧边栏的相关问题和网络热点问题分散了注意力,所以我写了一个Greasemonkey脚本来隐藏它们。该脚本适用于 Stack Exchange 站点,但不适用于 Stack Overflow 本身。
// ==UserScript==
// @name minimal-stack-exchange
// @include http://www.whosebug.com/*
// @include http://www.stackexchange.com/*
// @include http://*.stackexchange.com/*
// @include http://*.whosebug.com/*
// @description Hide distracting links from StackExchange pages
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @grant GM_addStyle
// ==/UserScript==
$("#sidebar").hide();
$("#herobox").hide();
$("#footer").hide();
我已经清除了我的 Firefox 缓存,使用 Inspect Element 来确定我使用了正确的 div ID,但没有成功。
解决方案是 http://whosebug.com
未被通配符 http://*.whosebug.com/*
捕获,因此添加另一个包含行解决了该问题。
// ==UserScript==
// @name minimal-stack-exchange
// @include http://www.whosebug.com/*
// @include http://www.stackexchange.com/*
// @include http://*.stackexchange.com/*
// @include http://*.whosebug.com/*
// @include http://stackexchange.com/*
// @include http://whosebug.com/*
// @description Hide distracting links from StackExchange pages
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @grant GM_addStyle
// ==/UserScript==
$("#sidebar").hide();
$("#herobox").hide();
$("#footer").hide();
在这种情况下,更好的解决方案是使用@match
Doc而不是@include
。 @match
智能处理前导 *.
并提供更好的性能和安全性,尤其是在 Chrome.
上
以下 @match
指令完成:
- 匹配所有 Stack Exchange 站点。 (问题@includes 遗漏了一些重要的问题。)
- 同时匹配
http://
和 https://
,因为所有 Stack Exchange 站点都支持 SSL。
// @match *://*.askubuntu.com/*
// @match *://*.mathoverflow.net/*
// @match *://*.serverfault.com/*
// @match *://*.stackapps.com/*
// @match *://*.stackexchange.com/*
// @match *://*.whosebug.com/*
// @match *://*.superuser.com/*
注意:对于实际脚本,我建议您也排除某些 Stack Exchange 页面,除非您明确为它们编码。
请参阅 Stack Apps 上的 "Complete list of sites to @include / @match into my script?"。
我被侧边栏的相关问题和网络热点问题分散了注意力,所以我写了一个Greasemonkey脚本来隐藏它们。该脚本适用于 Stack Exchange 站点,但不适用于 Stack Overflow 本身。
// ==UserScript==
// @name minimal-stack-exchange
// @include http://www.whosebug.com/*
// @include http://www.stackexchange.com/*
// @include http://*.stackexchange.com/*
// @include http://*.whosebug.com/*
// @description Hide distracting links from StackExchange pages
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @grant GM_addStyle
// ==/UserScript==
$("#sidebar").hide();
$("#herobox").hide();
$("#footer").hide();
我已经清除了我的 Firefox 缓存,使用 Inspect Element 来确定我使用了正确的 div ID,但没有成功。
解决方案是 http://whosebug.com
未被通配符 http://*.whosebug.com/*
捕获,因此添加另一个包含行解决了该问题。
// ==UserScript==
// @name minimal-stack-exchange
// @include http://www.whosebug.com/*
// @include http://www.stackexchange.com/*
// @include http://*.stackexchange.com/*
// @include http://*.whosebug.com/*
// @include http://stackexchange.com/*
// @include http://whosebug.com/*
// @description Hide distracting links from StackExchange pages
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @grant GM_addStyle
// ==/UserScript==
$("#sidebar").hide();
$("#herobox").hide();
$("#footer").hide();
在这种情况下,更好的解决方案是使用@match
Doc而不是@include
。 @match
智能处理前导 *.
并提供更好的性能和安全性,尤其是在 Chrome.
以下 @match
指令完成:
- 匹配所有 Stack Exchange 站点。 (问题@includes 遗漏了一些重要的问题。)
- 同时匹配
http://
和https://
,因为所有 Stack Exchange 站点都支持 SSL。
// @match *://*.askubuntu.com/*
// @match *://*.mathoverflow.net/*
// @match *://*.serverfault.com/*
// @match *://*.stackapps.com/*
// @match *://*.stackexchange.com/*
// @match *://*.whosebug.com/*
// @match *://*.superuser.com/*
注意:对于实际脚本,我建议您也排除某些 Stack Exchange 页面,除非您明确为它们编码。
请参阅 Stack Apps 上的 "Complete list of sites to @include / @match into my script?"。