2017-04-12 11 views
1

私はクリックしたときにwindow.onloadイベントを発生させるのに問題があります。JQueryのクリックはwindow.onloadに影響しません

たとえば、チェックボックスをクリックすると、iframeにコンテンツを表示する関数が呼び出されます。 2行目のcallOnLoad()のコメントを外すと、iframeにコンテンツが読み込まれますが、これは予期したものではありません。チェックボックスをオンにすると、iframeのコンテンツがレンダリングされます。

JSFiddle Demo

+0

ので、あなたのwをiframeはウィンドウの負荷に表示され、チェックボックスをクリックするとテキストが表示されますか? –

+0

チェックボックスをオンにすると、イベントのオンロードはありません。あなたがページに入った場合にのみオンロードされます。 – hydrococcus

答えて

1

私はあなたが事の下にしたいと仮定します -

のiframeがページの読み込み(またはウィンドウ負荷上)に表示されますが、チェックボックスをチェックすると、テキストが消え/表示されます/チェックしない?

以下のように行いはい場合: -

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<body> 
    <input type="checkbox" id="cgv" /> 
     <div id="foo"></div> 
</body> 

<script> 
$(document).ready(function() { 
    callOnLoad(); 
    $('#cgv').on('click', function(e) { 
     if ($('#cgv:checked').length !== 0) { 
      $('#iframe').contents().find("body").append('Test <br/>' + new Date()); 
     } else { 
      $('#iframe').contents().find("body").html(''); 
     } 
    }); 
}); 
// Function render iframe 
function callOnLoad() { 
    $("#foo").append("<div id=\"div-parent\"><iframe id=\"iframe\"></iframe></div>"); 
} 
</script> 
+0

「Alive to Die」というニックネームは私を怖がらせます... LOL ...それは私の問題に対処するためのスマートな方法ですが、その点はiframeが私のサーバからレンダリングされず、別のソースからレンダリングされ、私たちはiframeを編集したり変更することはできません。これは、「オリジナルのフレームをブロックしました」私のサーバのURLがクロスオリジンフレームにアクセスするのを防ぎます。 –

+0

@MikeNguyen iframeがサードパーティを経由してきて、 。申し訳ありませんが真実 –

1

チェックFiddle

JS:

// Add your javascript here 
$(function() { 
    $('#cgv').on('click', function(e) { 
    if ($('#cgv:checked').length !== 0) { 
     callOnLoad(); // Load iframe here, iframe does not work, the content does not render 
    } else { 
     $('#div-parent').remove(); // Remove div, 
    } 
    }); 
}); 

// Function render iframe 
function callOnLoad() { 
    $("#foo").append("<div id=\"div-parent\"><iframe id=\"iframe\" class=\"active\"></iframe></div>"); 
    var iframe = $("#foo").find('[id="iframe"]'); 
iframe.contents().find("body").append('Test <br/>' + new Date()); 

} 

HTML:

<input type="checkbox" id="cgv" /> 
    <div id="foo"> 
    </div> 
+0

RonyLoudありがとう、私はまだそれをテストしなかったが、私の問題に対処するためにはかなりスマートな方法です...しかし、ポイントは、このiframeは別のURLからレンダリングされた、私たちは任意のコンテンツを追加することはできませんクロスコンテキストiframeが発生します。 .. bla bla ... –

関連する問題