1

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

例如,当我执行时:

var site = location;

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

尽管 Firebug 通过它的“DOM Inspector”宣传了做类似事情的能力,每当我尝试修改任何 DOM 值时,我已经通过它的调试器暂停了 Javascript,但它只是忽略了我输入的新值。经过一些研究,根据此错误报告,这似乎是一个已知问题:http ://code.google.com/p/fbug/issues/detail?id=1707 。

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

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

4

1 回答 1

0

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

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

于 2011-06-02T00:05:51.130 回答