亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在動態插入的iframe中做好準備

在動態插入的iframe中做好準備

躍然一笑 2019-06-27 17:19:31
在動態插入的iframe中做好準備我們使用jQuery厚箱當某人單擊圖片時動態顯示iframe。在這個iframe中,我們正在使用蓋瑞用于顯示多幅圖片的javascript庫。問題似乎是$(document).ready在iframe中,啟動得太快,iframe的內容甚至還沒有加載,因此Galleria代碼沒有正確地應用于DOM元素。$(document).ready似乎使用iframe父準備狀態來決定iframe是否就緒。如果我們在一個單獨的函數中提取文檔調用的函數,并在超時100 ms之后調用它。它能工作,但我們不能冒險用一臺緩慢的計算機進行生產。$(document).ready(function() { setTimeout(ApplyGalleria, 100); });我的問題是:當動態iframe準備好而不僅僅是父事件時,我們應該綁定哪個jQuery事件來執行我們的代碼?
查看完整描述

3 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

我回答了一個類似的問題(見當iframe完成加載時JavaScript回調?)。您可以使用以下代碼獲得對iframe Load事件的控制:

function callIframe(url, callback) {
    $(document.body).append('<IFRAME id="myId" ...>');
    $('iframe#myId').attr('src', url);

    $('iframe#myId').load(function() {
        callback(this);
    });}

在處理iframes時,我發現可以使用Load事件而不是DocumentReadyEvent。


查看完整回答
反對 回復 2019-06-27
?
動漫人物

TA貢獻1815條經驗 獲得超10個贊

使用jQuery1.3.2,以下內容對我有用:

$('iframe').ready(function() {
  $('body', $('iframe').contents()).html('Hello World!');});

修訂:!實際上,上面的代碼有時看起來像是在Firefox中工作,而不是在Opera中工作。

相反,我為我的目的實現了一個輪詢解決方案。簡化如下:

$(function() {
  function manipIframe() {
    el = $('body', $('iframe').contents());
    if (el.length != 1) {
      setTimeout(manipIframe, 100);
      return;
    }
    el.html('Hello World!');
  }
  manipIframe();});

這不需要調用iframe頁面中的代碼。所有代碼駐留并從父框架/窗口執行。


查看完整回答
反對 回復 2019-06-27
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

在IFrames中,我通常通過在塊的末尾放置一個小腳本來解決這個問題:

<body>The content of your IFrame<script type="text/javascript">//<![CDATA[
   fireOnReadyEvent();
   parent.IFrameLoaded();//]]></script></body>

這對我來說大部分時間都是有用的。有時最簡單、最天真的解決方案是最合適的。


查看完整回答
反對 回復 2019-06-27
  • 3 回答
  • 0 關注
  • 500 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號