Member 8057273 Ответов: 3

Включить таймер, когда элемент iframe загрузится внешний сайт


В asp.net с помощью C# я загружаю внешний веб-сайт в iframe при нажатии кнопки, используя следующий код:
охраняемых недействительными GridView2_RowCommand(объект отправителя, GridViewCommandEventArgs е)
taskpage.Attributes["src"] = "somedynamicurlfromdatabase"; 
taskpage.Visible = true;

Я хочу Asp.net управление таймером должно быть включено, когда загрузка сайта в iframe завершится.
Примечание: кнопка, iframe и таймер находятся на панели обновления. я использую Visual Web Developer 2010 Express

Что я уже пробовал:

я попытался вызвать iframe и проверил его свойства, но не смог найти никакого решения.

3 Ответов

Рейтинг:
1

Member 8057273

Эта ссылка показывает функцию javascript. Что мне нужно, так это включить таймер asp, когда загрузка iframe завершится. На ТИКе таймера я буду далее выполнять некоторый код, но таймер должен запуститься, когда загрузка iframe будет завершена.

Graeme_Grant

Да, вам нужно будет использовать javascript/jquery/etc... чтобы делать то, что вы хотите.

Member 8057273

пожалуйста, предоставьте небольшой фрагмент, который может включить таймер asp через JS/JQ ... Я не могу заставить это работать.

Рейтинг:
0

Bryian Tan

Вот некоторые ресурсы, которые могут помочь.

Как контролировать asp.net таймер с использованием JavaScript
Эндрю Фредерик-контроль над ASP.NET управление таймером с помощью JavaScript[^]

Старт /стоп ASP.NET управление таймером с помощью JavaScript[^]

Проверить, если элемент iframe загружается перед вызовом скрипта включено asp.net таймер
javascript-как проверить, загружен ли iframe или в нем есть контент? - переполнение стека[^]

Обнаружение загруженного iframe-JavaScript-форумы Tumult[^]

Я погуглил это для тебя.
LMGTFY-включить asp.net таймер с javascript[^]

LMGTFY-проверьте, загружен ли iframe[^]


Member 8057273

<script>
    $(function(){
        $('#taskpage').ready(function(){
            var timer = $find('<%= Timer1.ClientID %>');
            //starts the timer:
            timer._startTimer();  
        });
    }
  
</script>



<iframe id="taskpage" width="90%" style="overflow:scroll;width:100%;height:800px;" runat="server" ></iframe>


 <asp:Timer ID="Timer1" runat="server" Enabled="False" Interval="10" 
        ontick="Timer1_Tick">
    </asp:Timer>


protected void Timer1_Tick(object sender, EventArgs e)
    {
        Response.Write("Running");
    }


This is my complete code, but nothing worked

Graeme_Grant

Хороший список, Брайан. Я поражен тем, как хорошо мои 75-летние родители могут использовать его изо дня в день... :)

Bryian Tan

Спасибо :)

Рейтинг:
0

Bryian Tan

Вот вам пример.

1. оберните таймер в панель обновления
2. не отключайте таймер на уровне элементов

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <asp:Timer ID="Timer1" runat="server" OnTick="Timer1_Tick" Enabled="true" Interval="10"></asp:Timer>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        </ContentTemplate>
    </asp:UpdatePanel>

    <iframe id="taskpage" src="http://www.c-sharpcorner.com/blogs/start-stop-asp-net-timer-control-using-javascript1" >
        <p>Your browser does not support iframes.</p>
    </iframe>


3. При загрузке страницы остановите таймер
4. После загрузки iframe запустите таймер. Вам нужно протестировать код, чтобы определить, полностью ли загружен iframe для кроссбраузерной совместимости
<script>
        $(document).ready(function () {
            //stop the time
            var timer = $find('<%= Timer1.ClientID %>');
            timer._stopTimer();
        });

        $('#taskpage').on('load', function () {
            var timer = $find('<%= Timer1.ClientID %>');
           //starts the timer:
            timer._startTimer();
        });
    </script>


Обновляйте метку каждый раз, когда тикает таймер
protected void Timer1_Tick(object sender, EventArgs e)
        {
            Label1.Text = DateTime.Now.ToString("yyyy/MM/dd/ HH:mm:ss");
        }


Member 8057273

Таймер начинает работать, когда страница загружается независимо от состояния iframe, и отладка консоли говорит:

Uncaught TypeError: Cannot read property '_stopTimer' of null
    at HTMLDocument.<anonymous> (tasklist.aspx:24)
    at c (jquery.min.js:3)
    at Object.fireWith [as resolveWith] (jquery.min.js:3)
    at Function.ready (jquery.min.js:3)
    at HTMLDocument.H (jquery.min.js:3)
(anonymous) @ tasklist.aspx:24
c @ jquery.min.js:3
fireWith @ jquery.min.js:3
ready @ jquery.min.js:3
H @ jquery.min.js:3

Bryian Tan

какой браузер вы используете? У вас есть < asp:ScriptManager runat="server"> На странице?