113

IE8 のみの問題があるサイトがあります。

コードは次のとおりです。

var w = window.open(urlstring, wname, wfeatures, 'false');

エラーは次のとおりです。

メッセージ: 引数が無効です。
行: 419 文字: 5
コード: 0
URI: http://HOSTNAME/js_context.js

コードの行番号を確認しました ("行" と "URI" は正しいです)。IE8 の以降のバージョンでは、これは正確であると見なされます。

アラートをダンプして、呼び出しのすべての着信パラメーターを確認しましたが、すべて有効に見えます。

この問題は FF (おそらく 3) では発生しません。

アップデート:

問題は、「var w」を実行するときに window.open() の結果を代入することにあるようです。行を 2 つのステートメントに分割すると、IE8 で機能します。

更新 2:

に基づく:

http://javascript.crockford.com/code.html

関数をすぐに呼び出す場合は、生成される値が関数自体ではなく関数の結果であることを明確にするために、呼び出し式全体を括弧で囲む必要があります。

これは正確にはここで起こっていることではありませんが、IE8 の互換性モードで原則を適用すると問題が解決することがわかりました。

var w = (window.open(urlstring, wname, wfeatures, false));
4

14 に答える 14

251

これは古い投稿ですが、誰かにとってはまだ役立つかもしれません。

同じエラーメッセージが表示されました。結局、問題は 2 番目の引数の無効な名前でした。つまり、次のような行がありました。

   window.open('/somefile.html', 'a window title', 'width=300');

問題は「ウィンドウのタイトル」で、有効ではありませんでした。次の行でうまくいきました:

   window.open('/somefile.html', '', 'width=300');

name実際、よく読んでみると、マイクロソフトは2 番目の引数としてa をサポートしていないことに気付きました。公式ドキュメント ページを見ると、Microsoft が次の引数のみを許可していることがわかります。その引数を使用する場合:

  • _空欄
  • _メディア
  • _親
  • _探す
  • _自己
  • _上
于 2009-09-22T20:46:36.193 に答える
78

IE は、ウィンドウ名の引数にうるさいです。スペース、ダッシュ、またはその他の句読点は好きではありません。

于 2010-01-12T21:30:10.503 に答える
16

IE で呼び出す場合window.open、2 番目の引数 (ウィンドウ名) は、定義済みのターゲット文字列のいずれか、またはJavaScriptで有効な識別子の形式を持つ文字列である必要があります。

Firefox で機能するもの: "Job Directory 9463460"、 Internet Exploder では機能しないため、たとえば "Job_Directory_9463460" に置き換える必要があります (スペース、マイナス記号、ドットは使用できません。有効な識別子である必要があります)。 .

于 2011-01-13T15:29:48.103 に答える
8

問題は wname である可能性があります。上記のリンクに示されているもののいずれかを使用してみてください。

オプション。ウィンドウの名前を指定する文字列。この名前は、フォームまたはアンカー要素の TARGET 属性の値として使用されます。

  • _blank sURL が新しい名前のないウィンドウに読み込まれます。
  • _media URL は、Microsoft Internet Explorer 6 のメディア バーに読み込まれます。Microsoft Windows XP Service Pack 2 (SP2) 以降。この機能はサポートされなくなりました。デフォルトでは、URL は新しいブラウザ ウィンドウまたはタブに読み込まれます。
  • _parent sURL は現在のフレームの親にロードされます。フレームに親がない場合、この値は値 _self として機能します。
  • _search Windows Internet Explorer 7 では無効です。詳細については、Internet Explorer 7 のセキュリティと互換性を参照してください。それ以外の場合、sURL は Internet Explorer 5 以降のブラウザーの検索ペインで開かれます。
  • _self 現在のドキュメントは、指定された sURL に置き換えられます。
  • _top sURL は、ロードされるフレームセットを置き換えます。フレームセットが定義されていない場合、この値は値 _self として機能します。

別の wname を使用すると、window.open は実行されません...

于 2009-05-29T21:22:11.383 に答える
5

実際には名前を使用できますが、スペースを含めることはできないため window.open("../myPage","MyWindows",...)、問題なく動作するはずです ( window.open )。

于 2011-06-11T20:48:45.147 に答える
4

次のコードを使用しているときに、この問題にも遭遇しました。

window.open('test.html','Window title','width=1200,height=800,scrollbars=yes');

しかし、「ウィンドウタイトル」の空白を削除すると、以下のコードが機能します:

window.open('test.html','Windowtitle','width=1200,height=800,scrollbars=yes');
于 2012-12-05T10:31:11.643 に答える
2

こんにちは、次のコードを使用して動作しています...

onclick="window.open('privacy_policy.php','','width=1200,height=800,scrollbars=yes');

以前私は好きに入った

onclick="window.open('privacy_policy.php','Window title','width=1200,height=800,scrollbars=yes');

マイクロソフトでは、ウィンドウ名を入力することを許可していないことを意味しますwindow.open。機能では空白にする必要があります...

ありがとう、ニレシュ・パングル

于 2011-06-20T13:11:32.227 に答える
1

値として「false」を持つ 4 番目の位置は何を表していますか? それは誤りではありませんか (つまり、引用符なしで?)。以前のバージョンの IE では文字列がブール値に変換される可能性がありますが、新しいバージョンではそうではありません。

于 2009-04-02T17:30:03.507 に答える
1

ここでの答えは、window.open() でタイトルを設定するときに IE がスペースをサポートしていないという点で正しいです。回避策を提供するものはないようです。

window.open 呼び出しからタイトルを削除し (null または '' を使用できます)、開いているページに次を追加しました。

<script>document.title = 'My new title';</script>

決して理想的ではありませんが、これにより、すべてのブラウザーでタイトルを好きなように設定できます。

于 2013-01-23T18:46:17.053 に答える
0

新しいウィンドウの名前などを使用してこのウィンドウにフォームを投稿する場合は、IE、FF、Chrome で動作するソリューション:

  var ret = window.open("", "_blank");
  ret.name = "NewFormName";

  var myForm = document.createElement("form");
  myForm.method="post";
  myForm.action = "xyz.php";
  myForm.target = "NewFormName";

      ...
于 2011-03-24T20:54:50.623 に答える
0

最後の引数を削除してみてください。それ以外に、urlstring、wname、および wfeatures が存在することを確認してください。

于 2009-04-02T17:29:38.017 に答える