2012-08-31 20 views
16

ブレークポイントから何かをしようとすると、このエラーが発生します。バグレポート:https://bugs.webkit.org/show_bug.cgi?id=83267SyntaxError:strictステートメントで 'with'ステートメントが無効です

回避策はありますか?私はこのjavascriptに関連していると仮定している理由のために私のサイトでサファリを実行するのをやめた。

編集:バグレポートには再現手順も含まれています。

別の編集:私は "with"ステートメントを使用していません。これはサファリコンソールからのバグです。

+1

Safari固有ではありません。 FF/Chromeでは "ステートメント"を含む "厳密なモードコードが含まれていない可能性があります"が生成されます。 –

+11

Safariに固有のことは、厳密な ";"スコープ内のデバッガコンソールで何かを評価しようとすると、あなたのスクリプトのどこにでも 'with'という単語が見えなくてもこのエラーが出ますまたはあなたが入力したもので。明らかにSafariはあなたが入力したものを 'with'で囲み、それを評価しようとします。詳細は、参照されているバグレポートを参照してください。 –

+1

[厳密モードを使用するとスコープ変数を検査できません](http://stackoverflow.com/questions/8545191/cant-inspect-scope-variable-when-using-strict-mode) –

答えて

6

with(obj) {}ステートメントは非推奨であり、strictモードでは無効です。

これを解決するには、strictモードを無効にするか、withステートメントを使用しないでください。

+0

私は技術的に(サファリは内部的には推測できますか?)しかし、これは私のdoctypeです:<!DOCTYPE html> ...これは厳密な意味での意味ですか? – quinn

+0

厳密なモードは、JSファイルの先頭に ''厳密に ''を使うと有効になります。 – Eric

+3

だから、回避策はSafariがこのバグを修正するまでどこでも「厳密な使用」を削除することだと思いますか? – quinn

2

ECMAScript 5禁止モードでの厳密モード。 with声明。彼らは有害と全く読めないです - withステートメントを使用しないよう

  • 無効strictモード(ファイル/関数から"strict mode";行を削除)、または
  • (優先)の2つから選択できます。

厳密なモードの詳細は、John Resig:ECMAScript 5 Strict Mode, JSON, and Moreです。あなたがstrictモードという、記事で読むことができます

  • は(delete foo;のように)delete変数にあなたができなくなり、eval
  • 限界使用量は(関数にいくつかの制限が追加されます例えば、callerおよびcalleeにアクセスする)、
  • は、with文を削除します。
+1

withを使用したOPではなく、Safariのコンソールコードです。 – gotofritz

関連する問題