-1

봐 스크린 샷에 클래스 요소를 얻을 캔트 : 당신의 차일 크롬 확장 콘텐츠 스크립트는

  • 대상 중 하나를 볼 수 없습니다, 그래서 iframe이가 iframe 대응의 자식으로 표시 DIV 최소화

    enter image description here

    1. 도 우리 사실 알고 1.

    확장의 콘텐츠 스크립트

    ,

    Google 크롬 콘솔

    console.log(targetDiv) // output: targetDiv 
    

    어떻게하는 것이 가능할까요? 두 가지 경우 모두 다른 '정상'요소가 인쇄됩니다. 마법의 절반 아이 요소에 대해 설명해 주시겠습니까?

    업데이트 :이 div는 동적으로 생성 된 setInterval 문제를 해결합니다!

  • +0

    귀하의 콘텐츠 스크립트가 메인 페이지에서만 실행을 iframe에. iframe의 contentDocument에 같은 출처 또는 ''all_frames : true' '가 필요한 경우 콘텐츠 스크립트의 manifest.json에 수동으로 액세스해야합니다. – wOxxOm

    +0

    이미 all_frames를 true로 설정했습니다. 또한 나는 포스트에서 "다른 요소는 두 경우 모두에 인쇄됩니다."라고 말합니다. 콘텐츠 scirpt는 너무 정의되지 않은 iframe에 인쇄됩니다. 또한이 div는 광고의 리디렉션으로 사용됩니다. 그게 내가 왜 그것을 감지하고 제거하고 싶습니다 – Lopol2010

    +0

    글쎄, 당신이 행동을 재현하기 위해 URL을 제공하지 않았으므로 다른 추측 요소가 동적으로 추가되고 나중에 MutationObserver 또는 setInterval/setTimeout. – wOxxOm

    답변

    0

    DOM에 요소가있는 후에 스크립트를로드해야합니다. 디버그 해보고 console.log(targetDiv)에 중단 점을 설정하고 DOM을 수동으로 조사하십시오. 이 요소 렌더링은 일부 내부 스크립트에 의해 지연 될 수 있습니다. 이 경우 당신은 시간이 요소를 감지하는 폴링 프로세스의 종류를 구현할 수 :

    const timer = setInterval(() => { 
        const myElement = document.getElementById('my-element'); 
        if(myElement) { 
        clearTimeout(timer); 
        processMyElement(myElement); 
        } 
    }, 150); 
    

    대신 콘솔 "컨텍스트"선택이 설정되는 반면, 단지

    const myElement = document.getElementById('my-element'); 
    processMyElement(myElement); 
    
    +0

    예 setInterval이 작동합니다. 감사합니다. Alden Ken – Lopol2010

    +0

    이제이 div들을 수동으로 제거 할 수 없으며 다음 재로드를 위해 사라지지만 코드는 사용할 수 없습니다. 어떤 아이디어?) – Lopol2010

    +0

    @ Lopol2010 당신은 무엇을 의미합니까? 'myElement.style.display = 'none''은 요소가 렌더링 된 후에 작동해야합니다. 예를 들어 [이 방법으로] DOM에서 완전히 제거 할 수도 있습니다 (https://stackoverflow.com/a/19298575/). 3211932). – dhilt