Как я могу изменить / «подделать» стандартные объекты JS DOM браузера (Window.location) во время выполнения? - PullRequest
1 голос
/ 02 июня 2011

Я бы хотел динамически изменить некоторые стандартные объекты 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), слишком низкоуровневые, чтобы делать что-либо стоящее с минимальным планированием и коротким периодом.времени.

Заранее благодарим за рекомендации и советы, которые вы можете дать!

1 Ответ

0 голосов
/ 02 июня 2011

Не уверен, правильно ли я вас понимаю, но если вы хотите изменить загруженный URL, вы можете сделать это, установив window.location.href. Если ваше намерение состоит в том, чтобы заменить сборки DOM, вам будет грустно слышать, что большинство встроенных объектов (хост-объектов) не являются обычными объектами JavaScript, и их поведение неясно определено. Некоторые браузеры могут позволять вам заменять и / или расширять некоторые объекты, тогда как в других браузерах они вообще не будут заменяемыми / расширяемыми.

Если вы хотите «написать скрипт браузера» с использованием JavaScript, вам определенно стоит взглянуть на node.js , и это http module . Также есть сторонний модуль под названием html5 , который имитирует DOM в node.js и даже позволяет использовать jQuery.

...