0

私が作業しているサイトでは、断続的なランタイムエラーが表示されますが、IE7と8でのみ発生します。このエラーはほぼランダムに表示されます(たとえば、最初のページの読み込み時に1回ポップアップする場合や、n番目のページの読み込みまでポップアップしない場合があります)。エラーは、line:0で発生したことを示し、エラーは「オブジェクトが必要です」です。私はサイト全体でjQueryを使用していますが、それを分割して無効にしても(つまり、さまざまなプラグインなど)、問題は解決していません。私はまだそれに取り組んでいますが、この「ヘルプ」を取得したいです。誰かが以前にこのようなことを扱ったことがある場合に備えて、stackoverflowに出てください。

それの間欠性は本当に私のお尻を荒らしているものです。

4

4 に答える 4

3

あなたの答えから、IDが「header-section」の要素がページの上部にあり、場合によっては、ページの残りの部分が読み込まれる前にcssルールが適用されていると思います。これは、その要素が存在する前に、式が'content-section'のoffsetHeightを評価しようとすることを意味します。

これに対処する方法についていくつか提案しましたが、それらの有用性を評価するには、それらを試してみる必要があります。

1 /'header-section'のIDに基づいてルールを作成する代わりに、クラス'header-sectionに基づいてルールを作成します。このクラスをマークアップに追加しないでください。ただし、ドキュメントの読み込みが完了したら、jqueryを使用して追加してください。要素のIDはそのままにしておきます...

$(document).ready(function(){
  $("#header-section").addClass("header-section");
});

2 /ルールを「content-section」が見つからないことに対してより寛容にします-cssルールで式を使用する必要性を感じたことがないため、式が評価される頻度がわかりません。これは機能しない可能性があります。

#header-section {margin-top: expression((0 - (this.offsetHeight + (document.getElementById("content-section") ? document.getElementById("content-section").offsetHeight : 0))) + "px");}

どうやって乗るのか教えてください。

PSルールが何を達成しようとしているのかわかりません-同じレイアウトであると想定しているページをモックアップしました。それは、ページの上部から多くのコンテンツを移動するだけです。それが見られるのを防ぎます。

于 2009-09-18T07:29:49.020 に答える
1

DOMが完全に作成される前に、スクリプトがオブジェクトにアクセスしようとしているようです。関数がjQueryready関数内にあることを確認しましたか?

   $(document).ready(function() {
          // put all your jQuery goodness in here.

   });
于 2009-09-18T03:25:01.690 に答える
0

私はそれを考え出した。IEのみのcssファイルで使用されている式は2つあります。次に例を示します。

#header-section {margin-top: expression((0 - (this.offsetHeight + document.getElementById("content-section").offsetHeight)) + "px");}

これらの式を使用する両方のインスタンスをコメントアウトすると、問題が解決します。なぜこれが正確に発生するのかわかりません(そして、これを実行するCSSを作成しなかったため、そのCSSファイルを調べることすらできませんでした)。

他のJSがまったくロードされていないにもかかわらず、エラーが発生している場所が少なくとも2つ使用されていたため、他のJSと競合することはありません。おそらく、何らかの理由でID(content-sectionまたはheader-section)が見つかりませんでしたか?よくわかりません...特に動作に一貫性がなかったためです。うーん...

于 2009-09-18T05:30:51.443 に答える
0

ソリューションbelugabobをありがとう

0行目に必要なオブジェクトで同じエラーが発生しました。ieスタイルシートのcssで式...?...:0を使用して修正すると、うまくいきました。

この種のコードが使用され、ナビゲーション/ヘッダーが上に移動する理由は、SEOに関連しています。あなたはあなたのコンテンツを一番上に置き、その下にそれほど重要ではないSEの賢明なナビゲーションを望んでいます。

于 2009-12-23T15:11:59.617 に答える