【问题标题】:Pulling already loaded JS into a local variable将已加载的 JS 拉入局部变量
【发布时间】:2012-06-18 07:01:54
【问题描述】:

目前无法通过 DOM 获取链接到 .js 的源代码。

var b = document.createElement("script");
b.type= "text/javascript";
b.src = "foo/source/ArcJ.js"  // dynamically load .js file

我可以吗

var c = b.src // probably not

我认为这只会给我路径...我想要来源...即一个字符串中的所有代码。

有没有办法在不使用 ajax 的情况下做到这一点?这不应该是一个简单的 DOM Pull ...

document.getElementById(b.id).source_code

?

【问题讨论】:

  • 我想更好的方法是使用 XMLHttpRequest
  • 不知道怎么做,但 b.src 可能只是字符串“foo/source/ArcJ.js”而不是文件内容本身。
  • @MarkLinus 我想这是唯一的方法......
  • @pimvdb。在这种情况下,innerHTML 将为空...

标签: javascript


【解决方案1】:

.src 是 url,因此您只需使用 ajax 请求从中加载 url...

$.get($("script[src*=jquery]").attr("src"),function(data){
    console.log(data)
})

【讨论】:

  • 您最好在选择器中添加script 标签,以提高一点。
  • 顺便说一句,如果您的脚本标签中有代码,您可以调用 $("script").txt()
【解决方案2】:

取自How do I get source code from a webpage?(我写的)

在javascript中有三种方式:

首先,通过 XMLHttpRequest : http://jsfiddle.net/635YY/1/

var url="../635YY",xmlhttp;//Remember, same domain
if("XMLHttpRequest" in window)xmlhttp=new XMLHttpRequest();
if("ActiveXObject" in window)xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
xmlhttp.open('GET',url,true);
xmlhttp.onreadystatechange=function()
{
    if(xmlhttp.readyState==4)alert(xmlhttp.responseText);
};
xmlhttp.send(null);

其次,通过 iFrames: http://jsfiddle.net/XYjuX/1/

var url="../XYjuX";//Remember, same domain
var iframe=document.createElement("iframe");
iframe.onload=function()
{
    alert(iframe.contentWindow.document.body.innerHTML);
}
iframe.src=url;
iframe.style.display="none";
document.body.appendChild(iframe);

第三,jQuery: http://jsfiddle.net/edggD/2/

$.get('../edggD',function(data)//Remember, same domain
{
    alert(data);
});

【讨论】:

  • 如果你觉得这个问题是重复的,你可能更愿意这样结束这个问题。
  • 它已经加载到 DOM 中了....是否有一些原则会被直接 DOM 拉取打破?
猜你喜欢
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多