javascript - 隐藏 stackoverflow 帖子的 Greasemonkey 脚本?

标签 javascript greasemonkey userscripts

我发现自己一遍又一遍地阅读相同的问题,所以我想要一种隐藏问题的方法。

我有一个脚本可以执行预期的操作,但是它削弱了现有的 javascript,例如投票按钮和在提问时添加标签。有谁知道为什么会这样,或者如何解决?

编辑:哦,在错误控制台中我得到:

Error: $ is not a function
Source File: http://cdn.sstatic.net/js/stub.js?v=b7084478a9a4
Line: 1

编辑2:

解决方案

(固定于 2014 年 6 月 17 日)

// ==UserScript==
// @name           StackOverflowHidePosts
// @namespace      StackOverflowHidePosts
// @description    Allows you to hide questions on Stack Overflow.
// @include        http://stackoverflow.com/*
// @require        http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js
// ==/UserScript==

var idListString = GM_getValue('idList', '');
var idList = idListString.split(',');
GM_setValue('idList', idList.join(','));

function getId (idString)
{
    return idString.split('-')[2];
}

function removeQuestion (e)
{
    var id = getId(e.data.questionSummaryDiv.id);

    $(e.data.questionSummaryDiv).hide(250);

    idList.push(id);

    setTimeout(function() {
        GM_setValue('idList', idList.join(','));
    }, 0);

    return false;
}

$('div.question-summary').each(function (index, questionSummaryDiv)
{
    var id = getId(questionSummaryDiv.id);

    if (idList.indexOf(id) != -1)
    {
        $(questionSummaryDiv).hide();

        return;
    }

    var link = $('<a><em>(Hide Post)</em></a>');

    link.attr('href', '#' + questionSummaryDiv.id);

    link.click({questionSummaryDiv: questionSummaryDiv}, removeQuestion);

    $('div.started', questionSummaryDiv).append(link);
});

最佳答案

如无必要,切勿注入(inject) JS,切勿在 FF GM 中使用页面的 jQuery——这是本例中的主要错误来源。

整个脚本应该是:

// ==UserScript==
// @name           StackOverflowImTooStupidMarker
// @namespace      StackOverflowImTooStupidMarker
// @description    Allows you to hide questions on Stack Overflow when you can't answer them.
// @include        http://stackoverflow.com/*
// @require        http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
// ==/UserScript==

var idListString = GM_getValue('idList', '');
var idList = idListString.split(',');
GM_setValue('idList', idList.join(','));

function getId (idString)
{
    return idString.split('-')[2];
}

function removeQuestion (e)
{
    var id = getId(e.data.questionSummaryDiv.id);

    $(e.data.questionSummaryDiv).hide(250);

    idList.push(id);

    setTimeout(function() {
        GM_setValue('idList', idList.join(','));
    }, 0);

    return false;
}

$('div.question-summary').each(function (index, questionSummaryDiv)
{
    var id = getId(questionSummaryDiv.id);

    if (idList.indexOf(id) != -1)
    {
        $(questionSummaryDiv).hide();

        return;
    }

    var link = $('<a><em>(Too Stupid)</em></a>');

    link.attr('href', '#' + questionSummaryDiv.id);

    link.click({questionSummaryDiv: questionSummaryDiv}, removeQuestion);

    $('div.started', questionSummaryDiv).append(link);
});

关于javascript - 隐藏 stackoverflow 帖子的 Greasemonkey 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8026902/

相关文章:

javascript - 如何将此 Greasemonkey 代码转换为适用于 Android 的 JavaScript?

javascript - 在 Safari 扩展中使用 jQuery

javascript - 如何忽略 Vanilla JavaScript 中的错误

javascript - 删除匿名事件监听器

javascript - 如果上面添加了 html,则来自 codepen 的 Css hover 会变得异常

javascript - 使用jQuery从数据库中的特定时间段交替显示文本

javascript - 使用 Greasemonkey(或类似的用户脚本引擎)可以更快地重定向?

javascript - Node.js 和同步

JavaScript 空数组

javascript - 将我的 Javascript、JQuery 和 CSS 集成到现有网站中