2009-06-17 24 views
6

存在しない行番号に私はIE 6で、次のエラー取得しています:IEの「無効な引数」エラー、

Line: 454 
Char: 13 
Error: Invalid Argument 
Code: 0 
URL: xxxxx/Iframe1.aspx 

を、私は私の人生のために何を見つけることができませんこれが原因です。

これは、メインページに複数のIFrameがあり、特定のIFrame(エラーメッセージのURLによってポイントされているIFrame)が1つしかなく、IFrameが見えない場合にのみ発生します装填時に。
私はそこまで絞っていますが、まだ具体的なものは見つかりませんでした。

問題のIFrameのHTMLには454行もなく、JSファイルもありませんそれによります。

に...上の任意の提案を、私は、デバッガとしてIEXPLORE.EXEするVSを取り付ける試みたが、エラーが発生したときに、それは壊れたが、その後、「現在の場所のために利用可能なソースコードはありません」と言われます私はこの1つを追いかけることができますか?


UPDATE:私は、基本的には、ブルートフォースを通じて、この問題を発見し、すべてをコメントアウトし、ランダムにコメント解除...
しかし、問題はまだ立って:エラーがどこにあるか見つけるための合理的な方法は何ですか、ときIEは間違った行番号/ファイルを報告しますか?

+0

問題全体を見ることができなければ、答えるのは難しい質問です。 FirefoxやOperaでデバッグしようとしましたか?そのうちの1つで開き、おそらくより有用なエラーメッセージのエラーコンソールを確認してください。 –

+0

Firefoxのfirebugプラグインはデバッグをずっと簡単にします。私はそのページでそれを試してみることをお勧めします。 –

+0

イアン、ベン、あなたの提案に感謝します。私は実際にFireBugを常に使用していますが、この問題はIEでのみ発生します。 –

答えて

5

実際の例がないとこれをデバッグすることは事実上不可能ですが、Internet Explorerで「無効な引数」エラーが発生する原因の1つが、スタイルプロパティに誤った値を設定しようとしています。

だから、のようなもの:

「バー」は、値nullを持っている、または未定義、または文字列「おばあちゃん」で、「grandmapxは」の有効な値ではないとして、それを原因となります
document.getElementById("foo").style.borderWidth = bar + "px"; 

borderWidthスタイルプロパティ

+0

ありがとうございます。私は実際に私がスタイルを操作しているすべての場所を調べ、それらをコメントしました。 IEが存在しない行番号のエラーを報告したときに私ができることへのポインタを実際に探しています。何か案は? –

+0

IEの方法は奇妙で、私たちは単なる人間ではありません;-) Firefox、Safari、Chrome、またはOperaで試してみて、あなたにエラーの正確な場所起こっている。 IEは残念なことに、無意味な行番号を生成することで有名です。 – NickFitz

11

IEのJavascriptエンジンは、デバッグに関しては面倒です。高度なオプションでスクリプトのデバッグを有効にしてみると、Visual Studioがインストールされていると、エラーの場所にジャンプします。あなたが何かを得ることができない他の時、特にコードが評価されていれば。

これらの行番号についてのもう一つは、それがエラーがで起こっているファイルをどの反映していないということです。私は行番号が実際に正しかった例がありましたが、それは、リンクの.jsファイルにありませんでしたメインファイル。

1

私もこの問題に遭遇しました。私は問題が見つかるまで、すべてのコメントに気を付けました。役に立つと分かっていることは、すべてのjavascriptメソッドにtry/catchブロックを追加することです。時には、エラーの原因となった方法を知らせるアラートを追加することもあります。まだ面倒ですが、試行錯誤よりも簡単です。また、新しいメソッドを書くたびにそれらを追加すると、イベントエラーのようなイベントエラーに多くの時間が節約されます。

function TestMethod() 
{ 
    try 
    { 
     //whatever 
    } 
    catch (ex) 
    { 
     ShowError(ex.description); 
     //alert("TestMethod"); 
    } 
} 
6

あなたにいくつかのより良いIE6のデバッグツールを与える可能性がMicrosoftスクリプトデバッガまたはDebugBar(http://www.debugbar.com)を使用してみてください。彼らはいつもIE6で私を助けます。

さらに、これは新しいバージョンのIEまたはIE6で発生しますか?

+0

DebugBarは素晴らしい発見でした(個人的には無料です)。ありがとう! – acatalept

0

別の可能性:

私は自宅と職場で、2台のコンピュータ間のDEVの多くを行うので、私は頻繁に自分自身に電子メールを送るか、またはサーバからのダウンロードページが上で動作します。最近、私は、Vistaが特定のファイルをブロックする際に、ある特定の方法でブロックを適用する習慣があることを認識していません。

結果として、たとえば、HTMLページではヘッダー内の.jsファイルにアクセスする必要がありますが、ローカルファイルにアクセスする権限はありません。この場合、.jsファイルに何を書き込むかは関係ありません。ブラウザはそれを読み取ることさえありません。Line: 0というエラーが発生します。だから、

あなたは、エラーのためにあなたのコードをとかすHTMLページのプロパティを確認し、そしてそれはOSによってブロックされていないかどうかを確認する前に....

2

IE9は、ブラウザモードがあります。

開発ツールを開き、コンソールでエミュレートするバージョンを選択し、エラーが発生したページを再ロードすると、コンソールに行番号とエラーが発生している正しいファイルが表示されます。

0

NickFitz氏によると、スタイリングは私のコードの問題でした。

document.getElementById('sums<%= event.id %>').style.border='1px solid #3b3b3b;' 

境界線のスタイルが削除され、IEの問題が解消されました。

1

他の読者へのメモ:私は最近この「無効な引数」を持っていました。エラーがIE7-9で報告され、最終的にsetTimeout/setIntervalを使用していた方法になっていることがわかりました。

これはIEで、間違っている:その代わり

var Thing = {}; 
Thing.myFunc = function() { ... }; 
setTimeout(Thing.myFunc, 1000); 

、そのような無名関数でコールバックをラップ:

var Thing = {}; 
Thing.myFunc = function() { ... }; 
setTimeout(function() { Thing.myFunc(); }, 1000); 

とこれ以上 "無効な引数" エラー。

+2

最初の呼び出しが間違っているのではなく、 'Thing.myFunc'は単なる関数です。 'Thing.myFunc'内のコードが' this'を使用しようとすると、o.kを処理します。 'Thing.myFunc()'(これはあなたの答えの中の2番目のコードで何が起こるかが直接的に呼ばれます)。 – epeleg