如何在运行时修改/"Spoof"标准浏览器 JS DOM 对象(窗口.位置)?



我想在web浏览器中动态更改一些标准JS DOM对象。

例如,当我执行:

var site = location;

我想在运行时为浏览器的"window.location"对象指定一个新值,而不是"正确的"对象(用于访问请求页面的URL),可以通过类似调试器的界面,也可以在需要时以编程方式指定。

尽管Firebug通过其"DOM检查器"宣传了类似的功能,但每当我在通过调试器暂停Javascript时试图修改任何DOM值时,它都会忽略我输入的新值。经过一些研究,根据这个错误报告,这似乎是一个已知的问题:http://code.google.com/p/fbug/issues/detail?id=1707。

理论上,我可以编写一个程序来简单地打开一个HTTP套接字并模拟浏览器的"用户代理",但这对我来说似乎是一个很大的麻烦。当我问的时候,有人知道一个好的Java/C#库吗?它的函数/对象可以模拟HTTP头并解析接收到的HTML/JS?我一直梦想着这样一个库的存在,但我尝试过的大多数库(Java的Apache HttpClient、C#的System.Net.HttpWebRequest)都太低了,无法用最少的计划和短时间做出任何有价值的东西。

提前感谢您提供的建议和建议!

不确定我是否正确理解您,但如果您想更改加载的URL,可以通过设置window.location.href来完成。如果你的意图是替换DOM构建,那么你会很难过地听到,大多数构建对象(主机对象)都不是常规的JavaScript对象,它们的行为也没有明确定义。有些浏览器可能允许您替换和/或扩展某些对象,而在其他浏览器中,它们根本不可替换/扩展。

如果你想使用JavaScript"编写浏览器脚本",你应该明确地了解node.js及其http模块。还有一个名为html5的第三方模块,它模拟node.js中的DOM,甚至允许使用jQuery。

最新更新