如何在运行时修改/“欺骗”标准浏览器JS DOM对象(Window.location)?

时间:2011-06-01 23:35:43

标签: javascript dom firebug spoofing

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

例如,当我执行:

var site = location;

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

虽然Firebug通过其“DOM Inspector”宣传了执行类似操作的功能,但每当我通过其调试器暂停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)都太低了,不能用最少的计划和短期的时间做任何有价值的事情。时间。

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

1 个答案:

答案 0 :(得分:0)

不确定我是否理解正确,但如果您想更改加载的网址,可以通过设置window.location.href来实现。 如果你的目的是取代DOM buildins那么你会伤心地听到,大多数内建对象(主机对象)不是常规的JavaScript对象和他们的行为没有明确的规定。某些浏览器可能允许您替换和/或扩展某些对象,而在其他浏览器中,它们根本不可替换/扩展。

如果您想使用JavaScript“编写浏览器脚本”,您应该明确查看node.jshttp module。还有一个名为html5的第三方模块,模拟node.js中的DOM,甚至允许使用jQuery。