3

ブックマークレットから iframe を作成しています。iframeにはid='contentIframe'

内部からiframeを非表示にしたいので、次のhtmlとjqueryコードを使用しています:

<button id="hide">hide</button>

<script type="text/javascript">
$(document).ready(function() {
    $("#hide").click(function() {
        $("#contentIframe").hide();
    });
});
</script>

しかし、ボタンをクリックしても何もしません。

また、iframe が読み込まれると css ファイルから読み込まれるため、内側の html のサラウンドは modal という名前のクラスになります。たとえば、Chrome でこのクラスを調べて手動で設定display:none;すると、iframe が非表示になり、これは実際には望ましいソリューションです。いくつかの理由があるので、試してみます:

<script type="text/javascript">
$(document).ready(function() {
    $("#hide").click(function() {
        $(".modal").hide();
    });
});
</script>

これもボタンをクリックしても効果がありません...何かアイデアはありますか?

注:iframeはユーザーが表示しているページからデータを収集するために使用されるため、外側のページではなく、iframeのみを制御できます

4

2 に答える 2

4

クリックイベントでこれを試してください:

$('#contentIframe', window.parent.document).hide();

そのようです:

親 Web ページの html:

<html>
    <body>
        <iframe id="contentIframe" src="frame.htm"></iframe>
    </body>
</html>

frame.htm:

<html>
    <head>
        <script src="http://code.jquery.com/jquery.min.js"></script>
    </head>
    <body style="background-color:red;">
        <button id="hide">hide</button>
        <script type="text/javascript">
            $(document).ready(function() {
                $("#hide").click(function() {
                    $('#contentIframe', window.parent.document).hide();
                });
            });
        </script>
    </body>
</html>

これは、親 Web ページとフレーム Web ページの両方が同じドメインから提供されていることを前提としています...

于 2012-09-19T16:08:19.333 に答える
0

あなたがリストしたコードはiFrame内で実行されています(私は思う)。そのため、外側のページの DOM を表示できないため、contentIFrame または .modal を表示できません。

外側のページのスクリプトは iFrame 内の要素を参照できると思うので、コードを外側のページに移動してみてください...

于 2012-09-19T16:00:58.243 に答える