2009-12-16 8 views
1

Я использую shadowbox для некоторых ссылок html/iframe, что эффективно открывает страницу в лайтбокс. Все работает отлично - за исключением случаев, когда кто-то нажимает до того, как javascript будет загружен.Ссылка Нажатие перед загрузкой Javascript (проблема)

Теперь очевидный ответ заключается в том, чтобы не использовать ссылки в качестве целей загрузки тенбота. Но это создает проблемы удобства использования, если javascript отключен. Кто-нибудь есть идеи о том, как еще решить проблему? Я рассматриваю загрузку встроенного javascript, который дезактивирует ссылки до тех пор, пока страница не будет загружена, хотя я не совсем уверен, как я к этому подхожу.

Все идеи приветствуются!

+0

Я не знаю, есть ли широкое решение этой проблемы. Но, в частности, для shadowbox, открывающего iframe, разумное решение состоит в том, чтобы поместить обнаружение javascript на внутреннюю страницу, чтобы определить, было ли оно открыто внутри iframe. – Matrym

ответ

2

В общем, я считаю, что это не проблема, но не можете ли вы просто вызвать процессор shadowbox сразу после ссылок? ("Ссылка").

т.е .:

.link, .link, .link скрипт $ Shadowbox(); /скрипт

+0

+1 Я согласен, что он делает это правильно, и любое решение для минимизации задержки будет пагубно сказываться на юзабилити. –

+0

Да, конечно, я не советую вам вставлять код в строку. Вместо этого следует рассмотреть широкий анализ того, что позволяет DOM загружаться достаточно быстро. – Aaron

+0

Я не согласен, что это всегда не нужно. Это может занять время загрузки просто потому, что есть много, чтобы загрузить. Посмотрите на GMail. Считаете ли вы, что пользовательский интерфейс будет улучшен путем удаления экрана загрузки? – Annabelle

0

Вы можете определить ваши ссылки, как

<a id="myLink" href="#" onclick="return false">...</a> 

, а затем переназначить обработчик события щелчка после загрузки вашего JavaScript. Или, если ваши ссылки имеют не-JavaScript альтернативы:

<a id="myLink" href="/path/to/nonJS/alternative.html">...</a> 

Опять же, когда ваши нагрузки JavaScript вы можете добавить обработчик событий мыши и изменить действие по умолчанию.

Если потребуется загрузить все ваши сценарии, вы можете пересмотреть, если вам нужно сразу загрузить их все. Если вы это сделаете, то вы могли бы реализовать экран загрузки (ниже пример использует JQuery, но он не должен):

<div id="loading"> 
    Loading... 
</div> 
<div id="content" style="display: none;"> 
    // Site content... 
</div> 
// Load your scripts here... 
<script type="text/javascript" src="..."></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#loading').hide(); 
    $('#content').show(); 
    }); 
</script> 

Таким образом, содержание вашего сайта не отображается, пока все ваши скрипты не будут загружены.

+0

Ссылка бесполезна для людей с отключенным Javascript. –

+0

Я предположил, что для сайта требуется JavaScript. Я добавил синтаксис альтернативной ссылки, который работает без JS. – Annabelle

Смежные вопросы