0

JSON 配列をいじって、JSON 配列内から直接ログをコンソールできるかどうかを知りたがっていました。すなわち:

{ "id": "1", "type": "text", "description": "hello <script>console.log('console this text')</script> I am testing },

上記の例では<script>console.log('console this text')</script>、実際の html ではなくテキストとして表示されます。配列内に配置することにより、コンソールでメッセージを生成するためにこれを機能させる方法はありますか?

4

2 に答える 2

1

それは本当にあなたが何を意味するかに依存します...

そのままの JavaScript では、オブジェクト表記をそのように使用できますが、実際には関数呼び出しでラップする必要があります。

これに加えて、javascript とルーズ テキストが非常にうまく混在しています。どちらをいつ使用しているかをブラウザに知らせる必要があります。

たとえば、これらのスクリプト タグは? すでに JavaScript を使用している場合、ブラウザに「ここにスクリプトがあります」と伝える必要はありません。

少しクリーンアップすると:

var myObject = { 
    id: "1", 
    type: "text", 
    description: function(){console.log('console this text')}
}

myObject.description();

これは有効な JavaScript であり、この方法でページに入力すると、ブラウザーで完全に正常に動作します。

ただし、これはあなたが意図していることではないと思われます...たとえば、AJAX呼び出しからこれを取得し、ブラウザー内で任意のスクリプトを実行することです。

それはうまくいきません。

このように使用される JSON は、データ形式として設計されており、メソッドを渡すことはできず、プロパティのみを渡すことができます。

ただし、このタイプの動作を誘導できる用途がいくつかあります: LOOK HERE .

つまり、JSON であろうとなかろうと、あらゆるテキストがクライアント システムで評価され、悪意のあるコードが実行される可能性があります。これは PHP のセキュリティ問題と非常によく似ています。この問題では、不十分なプログラミング手法により、eval やその他のエクスプロイトを使用してクライアントから供給されたコードをサーバー上で実行できます。

これが、非常に多くの Web サイトが、任意のユーザーから提供されたデータのスクラブに神経質になっている理由です。たとえば、ユーザー コメントから HTML タグや JavaScript コードをスクラブします。

于 2013-08-23T06:38:45.153 に答える