如何防止此 javascript 被评估?

How do I prevent this javascript from being evaluated?

我正在尝试构建一个基于 Web 的代码编辑器,并将 javascript 加载到文本区域值中,我偶然发现该页面正在评估代码。

var url = 'local.js';
var timestamp = new Date().getUTCMilliseconds();
$.get(url, {r:timestamp}, function(data) {
    $("#scriptview").val(data);
    $("#editor").slideDown();
}); 

如何防止 GET 请求评估代码?我直接从本地文件获取源代码。

更新: 更改代码以添加数据类型可解决此问题。我无法正确地获得 $.get 语法糖,所以我使用 $.ajax

var url = 'local.js';
var timestamp = new Date().getUTCMilliseconds();
$.ajax({url:url, data: {r:timestamp}, success: function(data) {
       $("#scriptview").val(data);
       $("#editor").slideDown();
       return false;
}, dataType: "text"});

我仍然不明白为什么要执行调用文件中的代码,我没有在脚本标记或任何内容中附加到主体。

jQuery.ajax 接受一个 dataType 参数。明确设置将:

  • 设置Acceptheader
  • 忽略响应的Content-Type,按照你说的格式解析数据。

如果您不设置它,那么 jQuery 将从响应的 Content-Type 推断数据类型。这通常是一件好事!

在这种情况下,您正在请求 JavaScript(将附带 Content-Type: text/javascript 响应 header)但不希望它被视为 JavaScript . jQuery 确实支持 "script" 作为数据类型!

设置 dataType(至 "text")以覆盖默认处理。

(归功于@freedomn-m 发现问题)