在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>
但是这个必须在浏览器实际执行这些文件之前发生。
有没有办法以某种方式拦截?
答案 0 :(得分:2)
$.ajax("/path/to/javascript.js").done(function(source) {
eval(transmogrifySourceCode(source));
});
我使用了jQuery语法,因为AJAX样式的获取方式更容易,并且在加载之前你必须提供自己的transmogrifySourceCode
函数来编辑源代码。
我确实想知道你为什么要做,但是。您应该完全控制输入源,那么为什么不在服务器上删除您不想要的代码呢?
答案 1 :(得分:0)
对于Opera,有一个特殊的BeforeScript
event can be listened to来自本地用户脚本。
因此,没有(好的)方法可以检测页面中的(动态添加的)<script>
元素,并防止它们加载和执行脚本。然而,您可以通过ajax加载脚本文件,尊重同源策略(!),并按照@DavidEllis建议评估修改后的内容。
另外,您需要代理服务器上的所有脚本内容并在那里修改它们。