是否可以加载本地版本的JavaScript文件而不是服务器版本?

时间:2011-04-01 16:46:49

标签: javascript browser

只是有一个快速的问题要扔掉,看看是否有解决方案......

让我假装我无法访问服务器。 我加载一个网页,发现他们从子文件夹加载了一个Javascript文件(假设是/scripts/js/some.js)

现在,我想在本地更改此文件并针对整个站点对其进行测试,而不将整个站点下载到本地文件夹。

有没有人知道我可以覆盖远程js文件加载的方式,而不是本地/编辑过的副本?

5 个答案:

答案 0 :(得分:4)

尝试使用noscript或adblock阻止加载服务器端脚本。然后使用greasemonkey加载您自己的脚本。

答案 1 :(得分:4)

我实际上找到了解决方案。发布任何来这里寻找它的人的详细信息。

Privoxy(www.privoxy.org/)[免费]在大多数情况下通过重定向允许此操作。虽然Firefox可能会阻止重定向,具体取决于您放置它的位置。这意味着您很可能无法在本地保存文件并通过file:// etc /

引用它

(我希望我有办法告诉你如何静态地在你有限制访问的网页上摆弄JavaScript ...但我还没有找到它。如果答案我会接受它。

当然,您必须设置Privoxy,并将其用作本地代理服务器。如果你只是临时使用它,这很简单:只需将浏览器指向端口8118上的代理127.0.0.1并运行它。

您必须添加重定向“默认操作”(选项>编辑默认操作)才能重定向浏览器以使用新副本:

{ +redirect{/newLocation/some.js} }
 /scripts/js/some.js

答案 2 :(得分:3)

如果您想要一种方法来使用本地文件而不是远程文件(在任何Web浏览器中),我强烈推荐使用Charles Web Proxy。 http://www.charlesproxy.com/

在Charles中,转到“工具”菜单并选择“本地映射”。通过在您希望从磁盘加载的Web上输入文件的地址来添加新映射。

Edit Mapping Example

此技术适用于各种文件(JavaScript,CSS,SWF)。当然,您可以选择暂时禁用此功能,它仅在Charles运行时才有效。非常方便。

答案 3 :(得分:1)

虽然你的代理解决方案更具永久性,但我发现使用Fiddler你几乎不需要配置就可以了:

How to replace Javascript of production website with local Javascript?

答案 4 :(得分:0)

在支持Chrome等FileReader的浏览器中,是的,结合'eval'来执行任意JS。在您的HTML中添加一个按钮供用户按下:

<form>
    <input type="file" name="file"
        onchange="loadJS(event.target.files);">
</form>

在您的脚本中添加:

function load() {
  var reader = new FileReader();
  reader.onload = function(evt) {
    eval(evt.target.result);
  };
  reader.readAsText(files[0]);
}