0

只是在玩 JSON 数组,想知道是否可以直接从 JSON 数组中控制台日志。IE:

{ "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,以这种方式使用,被设计为一种数据格式,不允许传递方法,只允许传递属性。

但是,有一些用途可以诱使这种行为:看这里

简而言之,任何文本,无论是否为 JSON,都可以在客户端系统上进行评估,并可能运行恶意代码。这与 PHP 中的安全问题非常相似,糟糕的编程实践允许使用 eval 和其他漏洞在服务器上运行客户端馈送代码。

这就是为什么这么多网站在清理任意用户提供的任何数据时神经质的原因……例如,从用户评论中清理 html 标记和 javascript 代码。

于 2013-08-23T06:38:45.153 回答
0

您可以尝试使用自调用函数。

var obj = {
'a' : '1',
'b' : '2',
'c' : (function(){console.log('3')})()
}
于 2013-08-23T06:44:44.563 回答