Javascript读取文件的解决方案(查看脚本,但不加载它)
javascript read file workaround (to view script but not load it)
EDIT我的问题是误导,因为它听起来像我想读/写客户端机器时,我的意思是,我想读一个脚本,而不是加载它,从源计算机。我只是假设,因为你可以召唤(加载)一个脚本,像这样
<script LANGUAGE="javascript" SRC="source.js"></script>
那么必须有一些方法来读取source.js之前,期间或之后加载它。我问这个问题是因为我还在努力寻找我之前问题的答案。我正试图找到一些方法,使对象/函数/类意识到产生它的代码,带有注释和制表符等。
您可以通过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>');
}
});
你的问题有点令人困惑,但听起来你想要一种访问对象代码的方法。老实说,我不知道这种方法能走多远,而且它不会包含注释,但您总是可以使用toString()。
。
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());
也许我对你的问题有点困惑,但首先要做的是:
<script LANGUAGE="javascript" SRC="source.js"></script>
不从客户端机器读取,它从加载页面的web上下文读取。例如,如果你加载的html页面是www.google.com,那么src="source.js"将加载www.google.com/source.js
如果我正确理解你的问题,我认为你的问题的答案是,源。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>
那么,第一个警报会给你"undefined",第二个警报会给你"object"。因此,如果你想测试source.js是否被加载,你可以简单地执行一个快速的条件语句:
if (typeof(variable) != "undefined") { doSomething(); }
解决这个问题的一种方法是设置一个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 ,然后执行代码。只有后者才会提供有用的调试信息(见这里)。
- Google Adsense多次加载脚本
- 如何准确执行加载脚本&退出弹出窗口
- RequireJ无法随机加载脚本
- 通过浏览器加载页面时触发加载脚本(js或jQuery)'s”;返回“;作用
- 在以前的文件夹中加载脚本
- 如何重新加载脚本标记
- 正在脚本中加载脚本
- 在pjax完成其工作时加载脚本
- I'我用setTimeout加载脚本,你能找到一个更快的方法吗
- 在页面模板上加载脚本
- 如何在我的情况下创建加载脚本
- 当用$.getScript()加载脚本时,有一种方法可以从用$.get script()装载的脚本中调用父脚本中的函数
- 延迟加载 脚本加载和/或执行
- 如何使用谷歌页面速度CSS加载脚本延迟多个CSS文件
- 最后加载脚本
- 如何基于HTML中的类加载脚本
- 在局部视图中加载脚本文件
- 如何防止在使用hapi.js reply().hold()时重新加载脚本
- 异步加载脚本
- 脚本加载脚本广告