0

在 PHP 中有一个名为stream_wrapper_register的函数。有了它,我可以获得每个即将包含的 PHP 文件的文件内容。所以这基本上让我可以控制将被解析的“代码”。

我想知道javascript中是否也有类似的东西?所以假设我包括我的文件:

<script type="text/javascript" src="js/myfile.js"></script>

然后我在该文件中的代码设置了流包装器(假设这在 JS 中也可用)。现在我希望能够获取将包含的每个其他 javascript 文件的文件内容:

<script type="text/javascript" src="js/somefile.js"></script>
<script type="text/javascript" src="js/someotherfile.js"></script>

但这当然必须在浏览器实际执行这些文件之前发生。

那么有没有办法以某种方式拦截呢?

4

2 回答 2

2
$.ajax("/path/to/javascript.js").done(function(source) {
    eval(transmogrifySourceCode(source));
});

我使用了 jQuery 语法,因为 AJAX 样式的获取方式更容易,而且您必须提供自己的transmogrifySourceCode函数来在加载源代码之前对其进行编辑。

不过,我确实想知道您为什么要这样做。您应该完全控制您的输入源,那么为什么不直接在服务器上删除您不想要的代码呢?

于 2012-05-29T19:29:36.627 回答
0

不,你不能。出于安全原因,您将不允许单独获取每个脚本的内容。

对于 Opera,有一个可以本地用户脚本监听的特殊BeforeScript事件。

因此,没有(好的)方法可以检测<script>页面中的(动态添加的)元素并阻止它们加载和执行脚本。然而,您可以通过 ajax 加载脚本文件,尊重同源策略(!),并按照@DavidEllis 的建议评估其修改后的内容。

否则,您需要代理服务器上的所有脚本包含并在那里修改它们。

于 2012-05-29T19:47:18.080 回答