Javascript 返回具有src属性的脚本内容
我这里有点问题,我甚至不知道这是否可能,这是我的难题: 我有以下脚本代码:Javascript 返回具有src属性的脚本内容,javascript,Javascript,我这里有点问题,我甚至不知道这是否可能,这是我的难题: 我有以下脚本代码: <script id='script1' src='http://link.to.js'></script> 当代码已经是html的一部分时,而不是从src加载代码时,这一点非常有效 我已经找了好几个小时了,还没有找到任何提示,希望有人能帮我。我想Firebug只是为了方便起见才告诉你的。如果要从脚本中获取代码,必须使用AJAX 你可以这样做: function ajaxFunction(){
<script id='script1' src='http://link.to.js'></script>
当代码已经是html的一部分时,而不是从src加载代码时,这一点非常有效
我已经找了好几个小时了,还没有找到任何提示,希望有人能帮我。我想Firebug只是为了方便起见才告诉你的。如果要从脚本中获取代码,必须使用AJAX 你可以这样做:
function ajaxFunction(){
var ajaxRequest; // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var scriptcontent = ajaxRequest.responseText;
//Do something with the content
}
}
ajaxRequest.open("GET", document.getElementById('script1').src, true);
ajaxRequest.send(null);
}
请注意:
后一种代码何时执行?你必须把它放在window.onload event handler.RE#3:或Dojo,或MooTools,或Prototype JS,或YUI,或任何其他值得一试的JS库中:)另外,只是为了确保OP清楚,这基本上涉及到要求同一个脚本额外的时间,以便您可以直接使用它来获取其内容。我认为直接的方法是不可能的。@Ken Franqueiro:的确,但我使用的是jQuery,所以…:)我明白了,这是一个完美的解释,不能满足我的需求,但因为我想要的显然是无法实现的(跨域策略),这是一个完美的答案,谢谢!另外,出于好奇和更多信息,脚本不能加载到浏览器缓存中并从那里读取吗?它肯定会绕过policy@user524695:从理论上讲,浏览器可能会将其缓存到硬盘上的文件中,但我确信通过JavaScript阅读也会有类似的安全问题(假设你能找出a)当前浏览器缓存的文件夹;b) 文件的实际名称;c)如果浏览器以这种方式缓存内容。)我认为这不是一个可行的选择。
var x = document.getElementById('script1').innerHtml;
document.getElementById('somedividhere').innerHtml = x;
function ajaxFunction(){
var ajaxRequest; // The variable that makes Ajax possible!
try{
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
} catch (e){
// Internet Explorer Browsers
try{
ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try{
ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
// Create a function that will receive data sent from the server
ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var scriptcontent = ajaxRequest.responseText;
//Do something with the content
}
}
ajaxRequest.open("GET", document.getElementById('script1').src, true);
ajaxRequest.send(null);
}