0

ライトボックススタイルのiframe内にログインページ(login.php)を開く「ログイン」リンクがあります。

通常は正常に動作しますが、視聴者のインターネット接続が非常に遅い場合は、ライトボックスのJavaScriptが読み込まれる前にログインリンクをクリックする可能性があります。これにより、login.phpがライトボックスiframeではなくウィンドウ自体に読み込まれます。これは問題です。

それで、特定の.jsファイルがロードされるまで、そのリンクのクリック可能性を遅らせることは可能ですか?つまり、ページが最初に読み込まれるとき、「ログイン」はクリックできません。その後、JavaScriptが読み込まれると、「ログイン」がアクティブなリンクになります。

または-この問題の最善の解決策は何ですか?

ありがとう!〜ダニエル

4

5 に答える 5

2

はい。あなたは怠惰なローダーのようなものを持つことができます。

<a href="#" data-href="login.php" class="lazy">log in</a>

これで、クラスlazyを持つ要素には、ダミーの機能しないリンクが含まれるようになります。そして、ウィンドウがロードされた後、それが機能するように、正しいリンクを置き換えます。

$(document).ready(function(){
  $('.lazy').removeClass('lazy').attr('href', $(this).data('href'));
});

また、問題があると思われる場合は、次のように、ログインボタンを非表示にして、ドキュメントが読み込まれたら表示することができます。

<a id="login" ... style="display: none;">Login</a>

そしてJavaScript:

$(document).ready(function(){
  $('#login').show();
});
于 2013-03-05T05:39:10.203 に答える
1

Document.Readyをご覧ください

DOMの準備ができた後に実行する関数。

コード例:

$(document).ready(function() {
    var login = $("<a href='login.php' >Login</a>");
    $('#elementName').append(login);
});

または、何かをする if (typeof something != 'undefined')前に何かが存在するかどうかを確認してください。

于 2013-03-05T05:41:26.767 に答える
0

コードがなければ、言うのは難しいです。ただし、私の推測では、使用しているライトボックスをブートストラップする前に、ドキュメントがロードされるのを待っていると思います。これは、そのライトボックスが実行する正しいことです。

@Matt Ballによる投稿のコメントで示唆されているように、ページの読み込み時により美しいjavascriptオプションに置き換えられる非javavascriptオプションが必要になります。

于 2013-03-05T05:41:40.297 に答える
0

スクリプトに関する 1 つの簡単な情報。読み込みを高速化するために、常にスクリプトを body タグの下に配置してください。迅速な応答が必要な場合は、ヘッドタグではありません。

于 2013-03-05T05:44:46.147 に答える
0

@ Praveen Kumarのソリューションは機能しますが、リンクを実際に「遅延ロード」する必要のない、より簡単な方法を次に示します。

HTML:

<a href="login.php" class="lazy">log in</a>

JS (ライトボックスがロードされた後、これをライトボックス スクリプトに追加します):

$('.lazy').removeClass('lazy');

またはjQueryなし(単純化した例):

document.querySelectorAll('.lazy')[0].className='';

CSS:

.lazy { -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; }
于 2013-03-05T05:45:25.050 に答える