Кэширование ссылки на элемент в iframe с помощью jquery - PullRequest
0 голосов
/ 03 сентября 2010

Я использую диалоговое окно jquery, которое использует iframe, чтобы сообщить пользователю, что сессия истекает.Я хотел бы обновлять этот диалог каждую секунду с помощью обратного отсчета, поэтому я бы хотел кэшировать ссылку на элемент обратного отсчета, чтобы нам не приходилось запрашивать DOM для него каждую секунду.сделать это разными способами, и я не могу заставить его работать.

$(documnet).ready(function() {
   $("<iframe src='../active_timer.html' id='iframeDialog' />").dialog({
       autoOpen: false,
       title: "Your session is about to expire!",
       modal: true,
       width: 400,
       height: 200,
       closeOnEscape: false,
       draggable: false,
       resizable: false,
       buttons: {
           "Yes, Keep Working": function(){
               $(this).dialog("close");
           },
           "No, Logoff": function(){
               //log user out
           }
       }
    });

    // cache a reference to the countdown element.
    // these below don't cache the reference I have tried them all.
    var $countdown = $("#iframeDialog").contents().find("#dialog-countdown");
    var $countdown = $("#dialog-countdown", window.child);
    var $countdown = $("#dialog-countdown", $('iframe').get(0).contentDocument);

    //this is where I update the #dialog-countdown every second after the reference is made.
});

active_timer.html:

<div id="dialog" style="overflow:hidden;">
    <p>
        <span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 25px 0;"></span>
        You will be logged off in <span id="dialog-countdown"></span> seconds.
    </p>
    <p>Do you want to continue your session?</p>
</div>

1 Ответ

0 голосов
/ 03 сентября 2010

При загрузке active_timer.html должен передать ссылку на элемент DOM в active_timer.html его родителю.

function onLoad() {
   window.opener.childCountdown = document.getElementById("dialog-countdown");
}

В родительском элементе:

var $countdown = $(childCountdown);
...