2013-01-31 19 views
1

我正在努力讓一個用戶腳本在鉻上工作。我知道這個問題已經被問幾百次,但我仍然無法得到它的工作...即使需要jQuery和Greasemonkey API函數,我如何才能讓我的跨域Grea​​semonkey腳本在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上運行,但Chrome不支持@require。我試過How can I use jQuery in Greasemonkey scripts in Google Chrome?How to play nicely with jQuery and Greasemonkey。 但是,我不能在Chrome中工作。 任何人有一些建議?

回答

1

使用Tampermonkey而不是將其作爲擴展名打開它的工作原理

+0

是的,Tampermonkey是FF + Chrome腳本中最聰明的方法。即使你有jQuery的工作,這[這個答案很好](http://stackoverflow.com/a/12751531/331508),你會發現這些'GM_'功能假貨不能正常工作,由於這個腳本運行在多個域中。 –

+0

@Bronk Adams,確保GM功能不會保存跨域,但大多數用戶不會使用全部4個域。無論如何,它們只是同一網站的別名。 –

相關問題