Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaScript中获取.js脚本的源代码?_Javascript_Jquery_Ajax - Fatal编程技术网

如何在JavaScript中获取.js脚本的源代码?

如何在JavaScript中获取.js脚本的源代码?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我试过运行上面的代码和它的变体-删除mimetype、缓存,将dataType设置为“scripttext”和“scripttext” 直接从jQuery文档: 多个空格分隔的值:按 在jQuery1.5中,jQuery可以转换 从中接收的数据类型 内容类型标题到您想要的内容 要求例如,如果你想要一个 要作为XML处理的文本响应, 对数据类型使用“文本xml”。你 也可以提出JSONP请求,就这样吧 作为文本接收,并由 jQuery作为XML:“jsonp文本XML。” 类似地,一个速记字符串,

我试过运行上面的代码和它的变体-删除mimetype、缓存,将dataType设置为“scripttext”和“scripttext”

直接从jQuery文档:

多个空格分隔的值:按 在jQuery1.5中,jQuery可以转换 从中接收的数据类型 内容类型标题到您想要的内容 要求例如,如果你想要一个 要作为XML处理的文本响应, 对数据类型使用“文本xml”。你 也可以提出JSONP请求,就这样吧 作为文本接收,并由 jQuery作为XML:“jsonp文本XML。” 类似地,一个速记字符串,如 “jsonp xml”将首先尝试 将jsonp转换为xml, 否则,请将jsonp转换为 文本,然后从文本转换为xml

我仅限于发出类型为“script”的数据类型请求,否则我会得到一个“…不允许由访问控制允许来源”错误。但无论如何,我不应该在jQuery中自由地解释它吗?我已经明确地要求它作为文本,但是不管我做什么,从服务器返回的数据msg总是“未定义”

有没有什么解决办法,黑客还是没有

编辑:此代码的工作原理是加载JavaScript文件并将其下载到用户的浏览器中。但我还是看不见

但无论如何,我不应该在jQuery中自由地解释它吗


浏览器中的安全机制阻止您这样做,因为它允许您从其他网站窃取用户的私人信息。如果您向脚本所在的同一域发出请求,它将起作用。否则,您无法使用JavaScript发出请求,而需要从服务器发出请求。

请注意,我正在使用jQuery Mobile 1.0a4.1和PhoneGap的jQuery 1.6.1

您的数据类型应为“文本”而不是“脚本文本”:

此命令工作正常,并在日志中返回以下内容:

$.ajax({url: 'http://gmaps-samples-v3.googlecode.com/svn-history/r16/trunk/xmlparsing/util.js', dataType: 'text', crossdomain:'true', success: function(msg, status, obj){console.log(msg);console.log(status);console.log(obj)}, mimetype: 'text/plain', cache:false});

我理解如果不允许我请求JSON对象或类似的东西,因为它可能包含敏感数据。但这是一个脚本!如果允许我执行代码并运行其中的函数,为什么我不能查看源代码?内容类型被认为不够可靠,不能用于安全目的。在很多情况下,服务器使用了错误的服务器(或者可能被欺骗)。啊,我明白了。我刚刚测试了一些代码,似乎您可以发出请求(并已接受/返回)任何内容,只要您将预期数据类型声明为“script”类型(例如try),浏览器仍将尝试“执行”此代码,但这将导致语法错误。
$.ajax({url: 'http://gmaps-samples-v3.googlecode.com/svn-history/r16/trunk/xmlparsing/util.js', dataType: 'text', crossdomain:'true', success: function(msg, status, obj){console.log(msg);console.log(status);console.log(obj)}, mimetype: 'text/plain', cache:false});
D/PhoneGapLog(  240): file:///android_asset/www/js/myJSFile.js: Line 1 : /
**
D/PhoneGapLog(  240): * Returns an XMLHttp instance to use for asynchronous
D/PhoneGapLog(  240): * downloading. This method will never throw an exception,
but will
D/PhoneGapLog(  240): * return NULL if the browser does not support XmlHttp for
any reason.
D/PhoneGapLog(  240): * @return {XMLHttpRequest|Null}
D/PhoneGapLog(  240): */
D/PhoneGapLog(  240): function createXmlHttpRequest() {
D/PhoneGapLog(  240):  try {
D/PhoneGapLog(  240):    if (typeof ActiveXObject != 'undefined') {
D/PhoneGapLog(  240):      return new ActiveXObject('Microsoft.XMLHTTP');
D/PhoneGapLog(  240):    } else if (window["XMLHttpRequest"]) {
D/PhoneGapLog(  240):      return new XMLHttpRequest();
D/PhoneGapLog(  240):    }
D/PhoneGapLog(  240):  } catch (e) {
D/PhoneGapLog(  240):    changeStatus(e);
D/PhoneGapLog(  240):  }
D/PhoneGapLog(  240):  return null;
D/PhoneGapLog(  240): };
D/PhoneGapLog(  240):
D/PhoneGapLog(  240): /**
D/PhoneGapLog(  240): * This functions wraps XMLHttpRequest open/send function.
D/PhoneGapLog(  240): * It lets you specify a URL and will call the callback if
D/PhoneGapLog(  240): * it gets a status code of 200.
D/PhoneGapLog(  240): * @param {String} url The URL to retrieve
D/PhoneGapLog(  240): * @param {Function} callback The function to call once ret
rieved.
D/PhoneGapLog(  240): */
D/PhoneGapLog(  240): function downloadUrl(url, callback) {
D/PhoneGapLog(  240):  var status = -1;
D/PhoneGapLog(  240):  var request = createXmlHttpRequest();
D/PhoneGapLog(  240):  if (!request) {
D/PhoneGapLog(  240):    return false;
D/PhoneGapLog(  240):  }
D/PhoneGapLog(  240):
D/PhoneGapLog(  240):  request.onreadystatechange = function() {
D/PhoneGapLog(  240):    if (request.readyState == 4) {
D/PhoneGapLog(  240):      try {
D/PhoneGapLog(  240):        status = request.status;
D/PhoneGapLog(  240):      } catch (e) {
D/PhoneGapLog(  240):        // Usually indicates request timed out in FF.
D/PhoneGapLog(  240):      }
D/PhoneGapLog(  240):      if (status == 200) {
D/PhoneGapLog(  240):        callback(request.responseXML, request.status);
D/PhoneGapLog(  240):        request.onreadystatechange = function() {};
D/PhoneGapLog(  240):      }
D/PhoneGapLog(  240):    }
D/PhoneGapLog(  240):  }
D/PhoneGapLog(  240):  request.open('GET', url, true);
D/PhoneGapLog(  240):  try {
D/PhoneGapLog(  240):    request.send(null);
D/PhoneGapLog(  240):  } catch (e) {
D/PhoneGapLog(  240):    changeStatus(e);
D/PhoneGapLog(  240):  }
D/PhoneGapLog(  240): };
D/PhoneGapLog(  240):
D/PhoneGapLog(  240): /**
D/PhoneGapLog(  240):  * Parses the given XML string and returns the parsed docu
ment in a
D/PhoneGapLog(  240):  * DOM data structure. This function will return an empty
DOM node if
D/PhoneGapLog(  240):  * XML parsing is not supported in this browser.
D/PhoneGapLog(  240):  * @param {string} str XML string.
D/PhoneGapLog(  240):  * @return {Element|Document} DOM.
D/PhoneGapLog(  240):  */
D/PhoneGapLog(  240): function xmlParse(str) {
D/PhoneGapLog(  240):   if (typeof ActiveXObject != 'undefined' && typeof GetObj
ect != 'undefined') {
D/PhoneGapLog(  240):     var doc = new ActiveXObject('Microsoft.XMLDOM');
D/PhoneGapLog(  240):     doc.loadXML(str);
D/PhoneGapLog(  240):     return doc;
D/PhoneGapLog(  240):   }
D/PhoneGapLog(  240):
D/PhoneGapLog(  240):   if (typeof DOMParser != 'undefined') {
D/PhoneGapLog(  240):     return (new DOMParser()).parseFromString(str, 'text/xm
l');
D/PhoneGapLog(  240):   }
D/PhoneGapLog(  240):
D/PhoneGapLog(  240):   return createElement('div', null);
D/PhoneGapLog(  240): }
D/PhoneGapLog(  240):
D/PhoneGapLog(  240): /**
D/PhoneGapLog(  240):  * Appends a JavaScript file to the page.
D/PhoneGapLog(  240):  * @param {string} url
D/PhoneGapLog(  240):  */
D/PhoneGapLog(  240): function downloadScript(url) {
D/PhoneGapLog(  240):   var script = document.createElement('script');
D/PhoneGapLog(  240):   script.src = url;
D/PhoneGapLog(  240):   document.body.appendChild(script);
D/PhoneGapLog(  240): }