编辑我的问题是误导性的,因为我想读取/写入客户端计算机的时候,我的意思是我想从源头读取脚本,而不是加载它电脑。我只是假设你可以召唤(加载)这样的脚本
<script LANGUAGE="javascript" SRC="source.js"></script>
然后必须有一些方法来在加载之前,期间或之后读取source.js。我问,因为我仍在努力寻找上一个问题here的答案。我试图找到一些方法来使对象/函数/类能够识别产生它的代码,包括注释和标签以及所有。
答案 0 :(得分:3)
您可以通过ajax加载它并将其作为字符串
访问$.ajax({
type: "GET",
dataType: "text",
url: "jsLoader.php",
success: function(data){
alert("Length: " + data.length.toString());
eval(data);
}
});
或者:
$.ajax({
type: "GET",
dataType: "text",
url: "source.js",
success: function(data){
alert("Length: " + data.length.toString());
$("head").append('<script type="text/javascript">' + data + '</script>');
}
});
答案 1 :(得分:2)
你的问题有点令人困惑,但听起来你想要一种访问对象代码的方法。说实话,我不知道你可以用这种方法得到多少,它不会包含注释,但你总是可以使用toString()。
e.g。
function myFunc() {
var somestuff = "my function's code";
};
function myClass() {
var that = this;
this.classFunc = function() {
var somethingelse = "my class function's code";
}
}
alert(myFunc.toString() + '\n\n' + myClass.toString());
答案 2 :(得分:0)
也许我对你的问题感到有些困惑,但首先要做的事情是:
<script LANGUAGE="javascript" SRC="source.js"></script>
不从客户端的机器读取,它从Web上下文中读取页面的加载。如果你加载的html页面是www.google.com,那么src =“source.js”将加载www.google.com/source.js
如果我正确理解你的问题,我认为你的问题的答案是在加载网页时不会异步读取source.js。假设source.js只包含这一行。
var variable = {};
在index.html中,你有这个:
<script type="text/javascript">
alert(typeof(variable));
</script>
<script type="text/javascript" src="source.js"></script>
<script type="text/javascript">
alert(typeof(variable));
</script>
然后,第一个警报将给你“未定义”,第二个警报将给你“对象”。因此,如果您想测试是否加载了source.js,您只需执行快速条件:
if (typeof(variable) != "undefined") { doSomething(); }
答案 3 :(得分:0)
解决这个问题的一种方法是设置一个php脚本,该脚本获取代码服务器端,将其包装在函数/对象中,并在这样做时将代码分配为字符串变量,有点像这样
/*Get js script at $filename*/
$script = fread($handle, filesize($fileName));
/*Add the code as a string*/
$codeAsString = file_get_contents($fileName);
$script .= '_code=' . json_encode($codeAsString) . ';';
但这并没有解决无法调试代码的更大问题。这样做的原因是我使用eval
而不是包含脚本。前者执行代码,而后者更新DOM 然后执行代码。只有后者才能提供有用的调试信息(参见here)。