JavaScript 流包装器,拦截 JS 文件内容
javascript stream wrapper, intercept JS file contents
在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>
但这当然必须在浏览器实际执行这些文件之前发生。
那么有没有办法以某种方式拦截它呢?
$.ajax("/path/to/javascript.js").done(function(source) {
eval(transmogrifySourceCode(source));
});
我使用了jQuery语法,因为AJAX风格的gets这样更容易,你必须提供自己的transmogrifySourceCode
函数来编辑源代码,然后再加载它。
不过,我确实想知道你为什么要这样做。您应该完全控制输入源,那么为什么不直接删除服务器上不需要的代码呢?
不,你不能。出于安全原因,您不会被允许单独获取每个脚本的内容。
对于 Opera,有一个特殊的BeforeScript
事件,可以从本地用户脚本中收听。
因此,没有(好的)方法来检测(动态添加)页面中的<script>
元素并阻止它们加载和执行脚本。但是,您可以通过 ajax 加载脚本文件,遵循同源策略 (!),并按照@DavidEllis建议规避其修改的内容。
否则,您需要通过服务器代理所有脚本包含并在那里修改它们。
相关文章:
- JS文件的路径正在消失
- 我的外部js文件无法加载
- 在不破坏未定义函数的情况下,对多个视图使用单个js文件
- 动态加载和卸载js文件
- 如何将变量传递到另一个js文件
- 如何将所有JS文件连接到一个文件夹中
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 如何使用php文件中的GET来获取我在.js文件中声明的变量
- 如何将模板中的标记脚本移动到.js文件中
- 什么's是连接供应商js文件的最佳方式
- 如何在定义js文件后为外部javascript文件设置变量
- 如何在JS文件中获取资源(.resx)字符串
- 将*.js文件的内容放入Object中
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 导致内容安全策略(CSP)冲突错误的本地jquery.js文件
- 如何使用Gmail运行.js文件
- 如何定义一个模块并使用它来分离js文件
- Angular JS文件上传到托管服务器
- 如何引用HTML中节点模块中的js文件
- 如何将JS文件从其他文件夹链接到页面