2014-05-15 1 views
11

CSS 추가를위한 GreaseMonkey의 GM_addStyle 방법과 동일한 TamperMonkey가 있습니까?TamperMonkey에 해당하는 GM_addStyle

Greasemonkey와에서, 당신과 같이 여러 요소에 CSS 속성의 무리를 추가 할 수 있습니다

function addGlobalStyle(css) { 
    var head, style; 
    head = document.getElementsByTagName('head')[0]; 
    if (!head) { return; } 
    style = document.createElement('style'); 
    style.type = 'text/css'; 
    style.innerHTML = css; 
    head.appendChild(style); 
} 

addGlobalStyle('body { color: white; background-color: black; }'); 
:

GM_addStyle("body { color: white; background-color: black; } img { border: 0; }"); 

가 TamperMonkey에서 해당 작업을 수행하려면, 나는 현재 다음 작업을 수행하는 데

이 스크립트는 작동하지만 TamperMonkey에 해당하는 기본 제공 GM_addStyle이있어 모든 스크립트에서이 작업을 반복하지 않아도됩니까?

답변

18

the TamperMonkey documentation에 따르면, GreaseMonkey처럼 GM_addStyle을 직접 지원합니다. 당신은/경기 규칙이 올바른 있습니다 포함 확인 , 다음 userscript의 상단이 데모 코드를 추가

GM_addStyle('* { font-size: 99px !important; }'); 
console.log('ran'); 

난 그냥 크롬 35에서 신선한 userscript에 그것을 테스트하고 예상대로 일했다. 다른 @grant rule이 있으면이 함수에 하나를 추가해야합니다. 그렇지 않으면 자동으로 감지되어 부여되어야합니다.

+0

훗 될 것입니다, 나는 그것의'GM_' 접두사와 그 .. 같은 겉으로는 않을 무언가를 테스트 할 생각하지 않았다. 그들은 더 나은 페이지 랭크 (PageRank) 문서에서 작업해야합니다. 현재 https://www.google.com/search?q=tampermonkey+gm_addstyle에서 볼 수 없습니다 - 고마워요! – arserbin3

+1

이것이 작동하지 않는 것 같습니다.'오류 : 스크립트 실행이 실패했습니다! GM_addStyle이 정의되지 않았습니다. '라는 메시지가 콘솔에 표시됩니다. – Husky

+3

@Husky 당신이 대답 (자동 감지에 의존하지 않을 것입니다)에 설명 된대로 기능을 부여해야한다는 것을 기억하십시오. 분명히 페이지 컨텍스트에 삽입 한 코드는 GM 기능에 액세스 할 수 없습니다. 위와 같이 테스트 한 결과 함수가 여전히 정상적으로 작동하는 것 같습니다. – lpd

46

GM_addStyle(...)이 작동하지 않는 경우 @grant GM_addStyle 헤더가 있는지 확인하십시오. "! 중요": 이것처럼

누군가가 interessted 경우 당신은 모든 CSS 규칙 후에 작성하지 않아도

// ==UserScript== 
// @name   Example 
// @description See usercript with grant header. 
// @grant   GM_addStyle 
// ==/UserScript== 

GM_addStyle("body { color: white; background-color: black; } img { border: 0; }"); 
2

, 나는 코드를 변경했습니다. 물론 이것은 GM_addStyle 대신에 함수를 사용하는 경우에만 작동합니다.

function addGlobalStyle(css) { 
    var head, style; 
    head = document.getElementsByTagName('head')[0]; 
    if (!head) { return; } 
    style = document.createElement('style'); 
    style.type = 'text/css'; 
    style.innerHTML = css.replace(/;/g, ' !important;'); 
    head.appendChild(style); 
} 

이 "addGlobalStyle('body { color: white; background-color: black; }');"의 출력,

는 " body { color: white !important; background-color: black !important; }');"