2013-10-03 3 views
1

Я использую плагин jquery под названием «typed», который выводит предложения один за другим. Это замечательно, но мне было интересно, можно ли приостановить код до тех пор, пока текстовая область не будет видна в окне браузера?Приостановить код до тех пор, пока он не появится в окне браузера

Как я хочу, чтобы люди могли видеть первое введенное предложение, но в настоящее время вы пропустите первое предложение, поскольку оно не видно из верхней части страницы.

Это страница, я работаю над: http://jakdesign.webflow.com/

Это код в голове HTML:

$(document).ready(function($) { 
    $("#hero-text").typed({ 
     strings: ["First sentence.", "Second sentence."], 
     typeSpeed: 0 
    }); 
}); 

Это плагин: https://rawgithub.com/morr/jquery.appear/master/jquery.appear.js

+0

Какова взаимосвязь между типизированным и появляющимся плагином. – bhb

ответ

0

document ready является когда DOM загружен, поэтому все атрибуты виджета полностью не извлекаются.

window onload ожидает, что активы на странице будут полностью загружены - так что информация и атрибуты тега доступны полностью.

Так что это будет работать для вас:

function typed() { 
    $("#hero-text").typed({ 
     strings: ["First sentence.", "Second sentence."], 
     typeSpeed: 0 
    }); 
} 

    <body onload="typed()"> 

ИЛИ В сценарии это сделать

window.onload = function(){ 
    $("#hero-text").typed({ 
      strings: ["First sentence.", "Second sentence."], 
      typeSpeed: 0 
     }); 
} 
+0

Лучше синтаксис jQuery: '$ (window) .on (" load ", function() {...});'. См. Также http://api.jquery.com/load-event/ –

+0

Я иногда избегаю использования jQuery везде, где могу .. для простой функции, такой как window.onload. Его просто обертка над window.onload .. :) – DarkHorse

1

Вы хотите инициализировать напечатанное, когда элемент становится видимым, не так ли? Затем попробуйте что-то вроде этого:

$(document).ready(function($) { 
    $("#hero-text").one("appear", function() { 
     $(this).typed({ 
      strings: ["First sentence.", "Second sentence."], 
      typeSpeed: 0 
     }); 
    }); 
}); 

Конечно, для этого требуется плагин jQuery.appear.

+0

+1 для этого фактически решает проблему сразу. Раньше я не заметил, что Op уже использовал появившийся плагин. – Abhitalks

+0

'.one ('? Не должно быть '.on'? –

+1

@AaronDigulla Нет,' one() 'выполняет обработчик не один раз: [documentation] (http://api.jquery.com/one/) – nrodic