1

インクルードの順序とは関係なく、JavaScript関数の実行順序を並べ替える方法。

役立つ質問ですが、私の質問に完全には答えていません: 複数の$(document).ready(function()セクションを作成できますか?(答えは「はい」で、jQuery.readyに追加された順序で実行されます) ())。

便利な通知の目的で、BBGninjawars.netでjavascriptがログイン/ログインしていないことを認識できるようにしようとしています。setLoggedIn()私は、サーバー側のphpがページのログイン時にjavascript関数呼び出しを書き出し、ログアウト中にページclearLoggedIn()が表示されているときに呼び出しを書き出すという単純なシステムを使用したいと考えていました。

<head>
...
        <!-- All the global ninjawars javascript, defines the setLoggedIn(), clearLoggedIn(), and modifyPageLayout() functions and (currently) calls modifyPageLayout() within jQuery.ready() -->
 <script type="text/javascript" src="js/nw.js"></script>

 {if $logged_in} // Server-side check.
   <script type="text/javascript">
     <!--
      setLoggedIn();
     // -->
   </script>
 {else} // Server-side check found that the user was not logged in.
   <script type="text/javascript">
     <!--
      clearLoggedIn();
     // -->
   </script>
 {/if}
</head>

問題:

現在、注文は次のとおりです。

  • setLoggedIn()とclearLoggedIn()をグローバルに(nw.jsで)定義します

  • ページ/情報変更コードを追加します。これをmodifyPageLayout()と呼びます。これは、jQuery.ready()(nw.js内)へのログイン/ログアウトを通知する必要があります。

  • ページのスクリプトタグでsetLoggedIn()またはclearLoggedIn()をインラインで呼び出します。

setLoggedIn()またはclearLoggedIn()の呼び出しが、現在jQuery.ready()ブロックにラップされているmodifyPageLayout()の前に発生し、DOMが読み込まれるたびに実行されることを確認する方法がわかりません。

  • setLoggedIn()およびclearLoggedIn()をjQuery.ready()ブロックに追加した場合、それらは追加された順序で実行されるため、順序は次のようにmodifyPageLayout()なりsetLoggedIn()ますsetLoggedOut()。意図。

  • setLoggedIn()とclearLoggedIn()は現在、コードで定義されたnw.jsに依存しているため、nw.jsを含める前にそれらを呼び出すことはできません。

1つの潜在的な解決策:

次のように記述することで、modifyPageLayout関数を遅らせることができます。

modifyFunction = modifyPageLayout; // Non-executed first-class function variable. (created in nw.js)

setLoggedIn(); // inline in the head of the page
modifyFunction(); // inline in the head of the page

誰か他の解決策がありますか?

4

1 に答える 1

0

多分私は何かを見逃しているので、申し訳ありません。

しかし、setLoggedIn() と clearLoggedIn() については、誰かがクリックしてログインまたはログアウトしたときにいつでも発生するようにしたくないでしょうか? そのため、document.ready 内にイベント ハンドラーを追加して、それに対処することができます。

おそらく、誰かがログインまたはログアウトしたときに何かが発生するという事実を、modifyPageLayout 関数に使用して、何をどのように表示するかを決定できます。

とにかく、質問がそれよりも複雑かどうかはわかりません

于 2009-11-25T18:16:42.160 に答える