4

複数のphpページに単一のjsファイルを使用しています。各 php の最後に、次のようにそれを識別するための javascript 変数を作成します。

<div>    
.
.
.
</div>

<script>
var idp = 1;
</script>

</body>
</html>

次に、jsファイルに次のものがあります。

$(document).ready(function() {
    .
    .
    .
    if (idp == 1) {
       FunctionWithTheCodeForPage1();
    }
    if (idp == 2) {
       FunctionWithTheCodeForPage2();
    }
});

Chrome と Firefox では正常に動作しますが、IE9 では idp 変数の値を取得していないように見える場合があり、「if」ステートメントの前にある jquery コードを実行しない場合もあります。問題は $(document )。準備(); FunctionWithTheCodeForPage1(); を設定したためです。ページ1のphp内で直接動作しますが、残りのコードは $(document).ready(); 内にあります。ではない。

これは私が使用しているライブラリです:

<script type='text/javascript' src="Scripts/Popcalendar.js"></script>
<script type='text/javascript' src='Scripts/jquery-latest.js'></script>
<script type='text/javascript' src='Scripts/jquery.lightbox_me.js'></script>
<script type='text/javascript' src='Scripts/MyJS.js'></script>

この問題は常に発生するわけではありません。ページが正しく読み込まれることもあれば、このエラーが発生することもありますが、ほとんどの場合、エラーが発生します。IE9 との互換性の問題はありますか? 私は何が欠けていますか?ありがとう

4

3 に答える 3

2

$(document).ready(function() {...}IE9によって呼び出されていない同じ問題がありました。

IE9 が「Quirks」モードで動作していたことが判明しました。(詳細については、F12 メニューを使用してください)。

ページの上部に次の(html5 doctype)を追加しただけです...

<!DOCTYPE html>

そして、次のヘッダー...

<meta http-equiv="X-UA-Compatible" content="IE=9" >

そして、IE9が順調に動き始めました!お役に立てれば...

于 2012-09-12T07:53:01.620 に答える
2

いくつかの関数の準備ができているので、いくつかの ID 変数を迂回する代わりに、関数を直接 jQuery に渡すだけです。

関数を jQuery に渡すと、ページの準備が整うとすぐに実行されます。通常、これは次のような無名関数を使用して行われます。

$(function() {   // or $(document).ready(function() {
  // ...
});

ただし、以前に定義した既存の関数を渡すこともできます。

$(FunctionWithTheCodeForPage1);

ボディに一意の ID を定義して、単一の機能を持つこともできます。

$(function () {
  $("body#page1").each(function () {
    // page1 specific;
  });
  $("body#page2").each(function () {
    // page2 specific;
  });
});

この方法では、余分なスクリプトをページに追加する必要はありません。

于 2012-09-01T21:25:12.390 に答える
0

1 つのことを行います。

var idpハードコーディングするのではなく、php を使用してその値を設定します。IT 部門が確実に入力します。

ノート:

また、php を使用して非表示フィールドに入力し、その値を取得することもできます。

于 2012-09-01T21:24:02.593 に答える