(Tampermonkey) 사용자 스크립트로 일부 단어가있는 주석을 숨기고 싶습니다. 예를 들어, 나는 게시물 도메인 간 iframe의 자식 노드를 숨기려면
<div class="post-body">
<header>
...
</header>
<div class="post-body-inner">
<div class="post-message-container" data-role="message-container">
<div class="publisher-anchor-color" data-role="message-content">
<div class="post-message " data-role="message" dir="auto">
<p>Abbas is nothing but puppet dog of Western savages and Nazis who want to enslave entire world.</p>
</div>
...
</div>
위해 다음 코드를 사용하여 페이지 http://www.cnn.com/2014/07/08/world/meast/mideast-tensions/index.html?hpt=hp_t1에 스크립트를
// ==UserScript==
// @name Hide CNN
// @match http://www.cnn.com/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @grant GM_addStyle
// @run-at document-end
// ==/UserScript==
$('div.post-body:contains("Abbas")').hide()
을 적용하려하지만 스크립트는 아무것도하지 않는 것. 내가 도대체 뭘 잘못하고있는 겁니까? 사용자 스크립트로 웹 페이지의 동적으로로드 된 부분을 필터링하는 것이 가능합니까?
UPD : 문제는 주석이 다른 도메인의 iframe에로드된다는 것입니다. Tampermonkey로 이러한 iframe의 자식 노드를 숨기려면 어떻게해야합니까? 어떻게 든 GM_xmlhttpRequest
을 사용해야합니까?
무엇 가능성이 일어나고있는 것은 스크립트가 실행될 때, Disqus에가 아직로드 가지고 있다는 것입니다. 당신이해야 할 일은 적합한 이벤트, 아마도'load()'이벤트 (http://api.jquery.com/load-event/)에 바인딩하는 것이라고 생각합니다. 개발자 콘솔에서 동일한 명령을 실행하려고하면 정상적으로 작동하는 것처럼 보입니다. 잘못된 시간대에 실행 중일 수 있습니다. –
흠. 개발자 콘솔에서'$ ('. post-body')'를 실행하는 주석이있는 완전히로드 된 페이지에서도 주요 기사에서 노드를 선택하지만 'null'을 반환합니다. '$ ('.cnn_storypgraphtxt')', 예상대로 작동 ... – xivaxy
#disqus_tread는 페이지가로드 될 때 전혀 비어 있습니다. 콘텐츠는 AJAX에 의해 동적으로 생성됩니다. MutationObserver를 사용하여 새로운 내용이 추가 된 시점을 인식해야합니다. AJAX 콘텐츠가 추가되면 window.onload가 실행되지 않습니다. –