Как я могу заставить мой междоменный скрипт Greasemonkey работать в Chrome, даже если для этого требуются функции jQuery и Greasemonkey API?

Я борюсь за то, чтобы пользовательский скрипт работал на Chrome. Я знаю, что этот вопрос задавали сотни раз, но я все еще не могу заставить его работать ...

// ==UserScript==
// @name        SRH hide closed cases
// @namespace   srhhideclosed
// @description For hiding appeals and reports that have been closed
// @include     http://www.seriousroleplayinghell.com*
// @include     http://seriousroleplayinghell.com*
// @include     http://www.srh.im.com*
// @include     http://srh.im.com*
// @version     1
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js
// ==/UserScript==

// Insert GM API for chrome
if (typeof GM_deleteValue == 'undefined') {
    GM_addStyle = function(css) {
        var style = document.createElement('style');
        style.textContent = css;
        document.getElementsByTagName('head')[0].appendChild(style);
    }

    GM_deleteValue = function(name) {
        localStorage.removeItem(name);
    }

    GM_getValue = function(name, defaultValue) {
        var value = localStorage.getItem(name);
        if (!value)
            return defaultValue;
        var type = value[0];
        value = value.substring(1);
        switch (type) {
            case 'b':
                return value == 'true';
            case 'n':
                return Number(value);
            default:
                return value;
        }
    }

    GM_log = function(message) {
        console.log(message);
    }

    GM_openInTab = function(url) {
        return window.open(url, "_blank");
    }

     GM_registerMenuCommand = function(name, funk) {
    //todo
    }

    GM_setValue = function(name, value) {
        value = (typeof value)[0] + value;
        localStorage.setItem(name, value);
    }
}

function toggleHidden(){
    if(GM_getValue("SRHhidden",0) == 1){
        GM_setValue("SRHhidden", 0);
    }else{
        GM_setValue("SRHhidden", 1);
    }
    hide(1000)
}

function hide(speed){
    if(GM_getValue("SRHhidden",0) == 1){
        $('s').closest('tr').fadeIn(speed);
    }else{
        $('s').closest('tr').fadeOut(speed);
    }
}

if(document.title == "Serious Roleplaying Hell - Appeals" || document.title == "Serious Roleplaying Hell - Admin/Player Abuse Reports" ){
    var TDHeads = document.getElementsByClassName("thead");
    var Head = TDHeads[1];
    var sp1 = document.createElement("div");
    sp1.style.cssFloat = "right";
    sp1.style.margin = "0 0 0 6px";
    sp1.innerHTML = "<span class='smalltext'><strong>| <a id='hideToggle'>Hide/Show closed threads</a></strong></span>";
    Head.insertBefore(sp1, Head.firstChild);
    var toggle = document.getElementById('hideToggle');
    toggle.addEventListener('click',toggleHidden,true);
    var style = "#hideToggle:hover{cursor:pointer} #hideToggle{color:#ffffff;}"
    GM_addStyle(style);

    hide(0);
}


Итак, что для этого нужно? Есть этот форум, на котором темы цепочек отображаются полосатыми, если ветка закрыта. По какой-то причине мне нужно один раз скрыть все закрытые, чтобы я мог просматривать только открытые потоки. У меня этот скрипт запущен в Firefox, но @require не поддерживается Chrome.

Я пробовал Как использовать jQuery в Скрипты Greasemonkey в Google Chrome? и Как хорошо играть с jQuery и Greasemonkey. Но я не могу заставить работать в Chrome. У кого-нибудь есть предложения?


person s.lenders    schedule 31.01.2013    source источник


Ответы (1)


Использование Tampermonkey вместо того, чтобы открывать его как расширение, работает

person s.lenders    schedule 31.01.2013
comment
Да, Tampermonkey - это самый умный и простой способ создания сценариев FF + Chrome. Даже если бы у вас работал jQuery, который этот ответ отлично работает, вы бы обнаружили, что эти подделки GM_-функции не работают правильно, так как этот сценарий работает на нескольких доменах. - person Brock Adams; 01.02.2013
comment
@Bronk Adams, Конечно, GM-функция не сохраняет кросс-домен, но большинство пользователей не используют все 4 домена. в любом случае это просто псевдонимы одного и того же веб-сайта. - person s.lenders; 08.02.2013