Javascript 如何获取外部加载的脚本标记的内容?

Javascript 如何获取外部加载的脚本标记的内容?,javascript,ajax,xml,cross-domain,Javascript,Ajax,Xml,Cross Domain,我想让bookmarklet从外部XML文件检索数据。我认为我可以将其作为脚本标记下载(类似于所描述的),然后使用普通DOM方法遍历脚本标记的innerHTML。但是当我拿到剧本的时候 fonts = document.createElement("script"); fonts.src = "http://www.myExternal/resource/fonts.xml"; fonts.id = "fontXML"; console.log(fonts.innerHTML) //"" (no

我想让bookmarklet从外部XML文件检索数据。我认为我可以将其作为脚本标记下载(类似于所描述的),然后使用普通DOM方法遍历脚本标记的
innerHTML
。但是当我拿到剧本的时候

fonts = document.createElement("script");
fonts.src = "http://www.myExternal/resource/fonts.xml";
fonts.id = "fontXML";
console.log(fonts.innerHTML) //"" (nothing)

我没有得到任何innerHTML。我是否可以使用此策略(或任何其他方法)来完成我试图完成的任务?

浏览器不允许像这样浏览脚本内容。因此,基本上,您面临的是标准CORS问题

  • 如果外部资源可以用JSONP应答,那么在脚本标记中使用它
  • 如果在资源上设置了适当的Allow Origin头,只需使用AJAX即可
  • 如果两者都不能,并且您无法访问资源的代码来修复它,那么我可以想象的唯一选项是创建您自己的代理并设置CORS头或提供JSONPAPI

  • JSONP将如何改变这种情况。我一点也不熟悉。它对跨域有帮助吗?@thomas如果服务器可以返回
    someCallback({“XML”:“”)
    而不是XML,那么您就可以定义
    someCallback(data){/*parse data*/}
    所以在脚本自动执行时,将调用您的someCallback。编辑:是的,它适用于任何域。