2011-06-22 10 views
3

GoogleとStack Overflowを検索した後、私はこれが可能であるかどうか尋ねることにしました。iFrameにロードされた要素を削除するJavascript

現在、私は自分のサイトにiFrameをロードしています。私は、iFrameにロードされた特定の要素を非表示にしたいと考えています。

<span id="blahblah"> 


function collapseAll(){ 

var body = document.getElementById('body'); 
var spans = body.getElementsByTagName("span"); 
var span; 
for (i = 0; i < spans.length; i++){ 
    span = spans[i]; 
    if(span.class=='blahblah'){ 
    span.style.visibility = "hidden"; 
    } 
} 
} 

しかし、これは機能しませんでした。質問1はこれを行うことができますか?はいの場合はどうすれば説明できますか?

ありがとうございました。

答えて

4

このスクリプトをiframeの内容の中に入れなければなりません。他のフレームのDOMにアクセスすることはできません。特に、別のドメインのDOMにアクセスすることはできません。

+0

を試すことができます。 –

1

セキュリティ管理のため、外部ウィンドウからiframe内の要素にアクセスすることはできません。

これを試す必要がありますが、iframeのウィンドウオブジェクトに関数を作成し、それを外側のウィンドウから呼び出すことができます。 iframe内に

:外側のウィンドウで

<script type="text/javascript"> 
    window.collapseAll = function() { 
     ..... 
    } 
</script> 

<script type="text/javascript"> 
    function doCollapse() { 
     document.getElementById('my_iframe").window.collapseAll(); 
    } 
</script> 

ここでも、それはテストされていないのですが、私はFacebookがそれに似た何かをかなり確信しています。

0

iframeがあなたのjavascriptと同じドメインにある場合、これは実行可能です。あなたは、この問題を修正し、次の

`

function collapseAll(){ 

var body = document.getElementById('body'); 
var spans = body.getElementsByTagName("span"); 
var span; 
for (i = 0; i < spans.length; i++){ 
    span = spans[i]; 
    if(span.class=='blahblah'){ 
    **span.style.display = "none";** 
    } 
} 
} 

を記述したJavaScriptプレーンを使用して

iframeが別のサイト(ドメイン)から来た場合、事態は本当に難しくなります。 greasemonkeyのようなソリューションがあり、異なるドメインのページを操作できます。

それは私がその後、運のうち、午前のような外部のサイトが見えているので、あなたは

document.frame.document.getElementsByTagName('span') 
+0

greasemonkeyプラグインを必要とせずに、このページにロードするソリューションのようなgreasemonkeyを使用する方法はありますか? –

+0

greasemonkeyの背後にあるコンセプトはデフォルトの機能ではないので、プラグインが必要です。 –

0

<script type="text/javascript"> 
 

 
function remove_elemment() { 
 
    var body = document.getElementById('body'); 
 
\t var divs = body.getElementsByTagName("div"); 
 
\t var div; 
 
\t for (i = 0; i < divs.length; i++){ 
 
\t div = divs[i]; 
 
\t if(div.class=='buybox'){ 
 
\t \t **div.style.display = "none";** 
 
\t } 
 
\t } 
 
}; 
 

 
function doRemove() { 
 
    document.frame.document.getElementById('my_iframe').remove_elemment(); 
 
}(); 
 

 
</script>
<div class="floating-widget"> 
 
\t <iframe id="my_iframe" src="http://www.nodebeginner.org/index-vi.html" frameborder="0" width="100%" height="500"> \t \t \t \t 
 
\t </iframe> 
 

 
</div>

関連する問題