1
我正在努力讓一個用戶腳本在鉻上工作。我知道這個問題已經被問幾百次,但我仍然無法得到它的工作...即使需要jQuery和Greasemonkey API函數,我如何才能讓我的跨域Greasemonkey腳本在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中工作。 任何人有一些建議?
是的,Tampermonkey是FF + Chrome腳本中最聰明的方法。即使你有jQuery的工作,這[這個答案很好](http://stackoverflow.com/a/12751531/331508),你會發現這些'GM_'功能假貨不能正常工作,由於這個腳本運行在多個域中。 –
@Bronk Adams,確保GM功能不會保存跨域,但大多數用戶不會使用全部4個域。無論如何,它們只是同一網站的別名。 –