2017-04-12 87 views
1

我點擊時遇到了點燃事件window.onload事件,看起來對我不起作用。JQuery Click不起作用window.onload

例如,當我點擊複選框時,他們將調用函數來渲染帶有內容的iframe。如果取消註釋第2行callOnLoad(),iframe將加載內容,但這不是我所期望的,我期望在複選框被選中時,iframe中的內容將被呈現。

JSFiddle Demo

+0

所以你W¯¯螞蟻iframe將顯示在窗口加載和文本出現時複選框點擊? –

+0

如果單擊複選框,則不會有事件發生。只有在進入頁面時纔會觸發onload。 – 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

感謝'活着死',你的暱稱讓我感到恐慌...... LOL ...它是處理我的問題的一種非常聰明的方式,但重點是那些iframe不是從我的服務器渲染的,而是從另一個源渲染的,我們無法編輯或更改iframe,它會導致'阻止與我的服務器URL「我的服務器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 ... –