2014-03-30 4 views
0

Google을 시도했지만 답변을 찾을 수없는 것 같습니다.크롬 확장 삽입 스타일이 작동하지 않습니다.

1 가지를 수행하는 Chrome 확장 프로그램을 만들려고 시도하면서 1 개 이상의 요소에 style.display 속성을 변경/삽입합니다. 일반적으로 이것은 사소한 일이지만 어떤 이유에서 나는 확장 기능을 사용할 수 없습니다.

의 manifest.json 파일

{ 
    "name": "My app", 
    "version": "1.0", 
    "manifest_version": 2, 
    "description": "Do thing.", 
    "permissions": [ 
     "tabs", "http://*/", 
"tabs", "https://*/" 
    ], 
    "content_scripts": [ 
     { 
      "matches": ["https://www.facebook.com/*"], 
      "js": ["myapp.js"], 
      "run_at": "document_end" 
     } 
    ] 
} 

myapp.js

document.getElementById("rightCol").style.display="none"; 

그러나 그 일을 아무것도하지.

+1

1) 필수 태스크? 2) 확장 실행 후 devtool에서 #rightCol 항목을 확인하십시오. display : none? –

+0

콘텐츠 스크립트에서 나머지 페이지가로드 될 때까지 기다릴 수있는 메커니즘을 사용 했습니까 (이벤트 리스너 또는'$ (document) .ready() '를로드합니까?) – devnull69

답변

0

죄송합니다. 스크립트가 아닌 것으로 밝혀졌습니다. 각 이유로 변경 후에 크롬을 다시 시작해야만하는 몇 가지 이유가 있습니다.

는 항상 막대를 숨길 것입니다 그 후 나는 그것이 아니었다 넣다 시도/캐치 내부 (다음 myapp.css

document.addEventListener("DOMSubtreeModified", listener, false); 

리스너 함수에 숨어있는이를 추가하여 고정 할 수있는 화면에).

이제 완벽하게 작동하고 심지어 크롬 웹 스토어 : 여기에 관심있는 사람들을위한 에 링크입니다 : https://chrome.google.com/webstore/detail/hide-facebook-adsfacebook/pkconkhalmgfkbikgonhonmmlbkkoonc 당신은 크롬 개발자 도구에서 수동으로 같은 일을 할 경우, 당신은 어떻게해야합니까

+0

Chrome을 다시 시작할 필요가 없습니다. 1) 확장 프로그램 페이지에서 확장 프로그램을 다시로드하고, 2) 새 콘텐츠 스크립트가 삽입되도록 페이지를 새로 고치는 것으로 충분합니다. – Xan

+0

thats 원래 생각하고 있었지만, 내가 다시 시작할 때까지는 작동하지 않았다. 지금은 업데이트로 인해 너무 기분이 바뀐다. – bensonsearch

0

document_end이 (가) 실행 된 후 페이지에서 프로그래밍 방식으로 요소를 추가 할 수 있습니다. 스크립트 대신 CSS를 삽입하면이 문제를 해결하고 전체 작업을 단순화 할 수 있습니다.

이 페이지 자체 프로그래밍이 규칙을 무시하지 않는 한 당신이 을하려고하는지 달성해야

  • 을 같은 매니페스트 파일 변경 content_scripts에서는 다음과 같습니다

    "content_scripts": [ 
        { 
         "matches": ["https://www.facebook.com/*"], 
         "css": ["myapp.css"] 
        } 
    ] 
    
  • 다음을 사용하십시오. myapp.css :

    #rightCol { 
        display:none !important; 
    } 
    
+0

그러면 기존 CSS를 덮어 씁니까? 나는 그것이 가능하다는 것을 모르고 있었다 : – bensonsearch

+0

@bensonsearch 그것은 달려있다. 그러나 대부분의 경우 그렇다. CSS 특이성에 대한 [이 개요] (http://css-tricks.com/specifics-on-css-specificity/)를 참조하십시오. ('! important' + id)는 페이지 자체가'! important'로 스타일 속성을 설정하지 않는 한 승리합니다. – Xan

관련 문제