当前位置:  开发笔记 > 编程语言 > 正文

如何获取指定为<script>标记的'src'的文件内容?

如何解决《如何获取指定为<script>标记的'src'的文件内容?》经验,为你挑选了4个好方法。

如果我有这样的脚本标记:


我想获取"script.js"文件的内容.我正在考虑类似document.getElementById("myscript").text但在这种情况下它不起作用.



1> Lasar..:

您想获取文件http://www.example.com/script.js的内容吗?如果是这样,您可以转向AJAX方法来获取其内容,假设它与页面本身位于同一服务器上.

你能详细说明你想要完成的事情吗?


如果是这样,请不要担心,浏览器会自行处理外部JS脚本的缓存.
@Qix浏览器缓存是可靠的,但通常需要往返服务器(例如:检查ETag).使用本地存储可以防止此往返.

2> Sauleil..:

我知道它有点晚了,但有些浏览器支持标签LINK rel="import"属性.

http://www.html5rocks.com/en/tutorials/webcomponents/imports/


对于其他人来说,ajax仍然是首选方式.


现在该接口已过时。

3> Dan Goldstei..:

我认为这些内容不会通过DOM提供.您可以获取src属性的值并使用AJAX从服务器请求文件.



4> humanityANDp..:

tl; dr脚本标记不受CORS和同源策略的约束,因此javascript / DOM无法提供对通过会破坏CORS策略,例如,现代浏览器会阻止XHR资源提供访问控制允许来源标头,因此浏览器不允许使用除以外的其他任何方式CORS来获取内容。

使用以下代码(如在其他问题“使用XHR / AJAX”中提到的那样),可以对文档中所有非内嵌脚本标签进行另一个请求。

function printScriptTextContent(script)
{
  var xhr = new XMLHttpRequest();
  xhr.open("GET",script.src)
  xhr.onreadystatechange = function () {
    if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
      console.log("the script text content is",xhr.responseText);
    }
  };
  xhr.send();
}
Array.prototype.slice.call(document.querySelectorAll("script[src]")).forEach(printScriptTextContent);

因此,我不再重复,而是想通过此答案在其原因方面进行补充。

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有