この場合、このスタイル ルールが適切な iframe に適用されていることを確認するだけでよく、いつロードされるかを気にする必要はありません。
#:1.ft {display: none !important;}
(^_^)
ただし、src="javascript: ...
.
より一般的な場合。そのノード (またはそのノードを含む iframe) が AJAX によってロードされた場合、「domready」または「load」のかなり後に間違いなく表示されます。
実証済みの解決策は、要素をポーリングすることです。
var waitForElementIntrvl = setInterval (checkForElement, 333);
function checkForElement () {
var firstIframe = document.querySelector ("iframe");
if (firstIframe) {
var targElement = firstIframe.contentWindow.document.getElementById (':1.ft');
if (targElement) {
targElement.style.display = 'none';
clearInterval (waitForElementIntrvl);
}
}
}
でも:
Google Chrome のコンテンツ スクリプトは、依然として iframe DOM ではうまく機能しません。したがって、そのコードが機能するためには、ターゲット ページに挿入する必要があります。最終的なコンテンツ スクリプト コードは次のようになります。
function userscriptMain () {
var waitForElementIntrvl = setInterval (checkForElement, 333);
function checkForElement () {
var firstIframe = document.querySelector ("iframe");
if (firstIframe) {
var targElement = firstIframe.contentWindow.document.getElementById (':1.ft');
if (targElement) {
targElement.style.display = 'none';
clearInterval (waitForElementIntrvl);
}
}
}
}
addJS_Node (null, null, userscriptMain);
function addJS_Node (text, s_URL, funcToRun, runOnLoad) {
var D = document;
var scriptNode = D.createElement ('script');
if (runOnLoad) {
scriptNode.addEventListener ("load", runOnLoad, false);
}
scriptNode.type = "text/javascript";
if (text) scriptNode.textContent = text;
if (s_URL) scriptNode.src = s_URL;
if (funcToRun) scriptNode.textContent = '(' + funcToRun.toString() + ')()';
var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
targ.appendChild (scriptNode);
}