Как получить измененный контент на странице? - PullRequest
0 голосов
/ 13 октября 2010

Я написал скрипт пользователя для последней версии браузера Chrome. Похоже, что скрипт не может получить измененное содержимое страницы после загрузки (например, после загрузки страницы я нажал «sth» и всплыло встроенное окно).

Даже если бы я использовал window.setTimeout(), я все равно не могу получить обновленный контент в обратном вызове таймера через document.getElementById(). Я проверил страницу и обнаружил, что всплывающий элемент существует в DOM.

Это ограничение пользовательского скрипта? Или некоторые другие методы могут быть использованы для получения обновления в сценарии пользователя?

Обновление: Я попытался DOMSubtreemodified событие, как предложено. Но поведение все еще странно.

Я добавил только одну строку JavaScript в usercript для my.safaribooksonline.com,

document.addEventListener("DOMSubtreeModified", function () {
    alert(eval('typeof OpenSignInPopup')); });

Но в окне предупреждения отображается "undefined" как результат оценки OpenSignInPopup. Но я могу одновременно запустить оператор оповещения в консоли скрипта на той же странице и показать результат как «функция».

Эта функция не была загружена при первом запуске пользовательского скрипта. Так как я могу использовать его в сценарии пользователя?

1 Ответ

1 голос
/ 13 октября 2010

Вам необходимо предоставить подробную информацию, например, соответствующие фрагменты кода и целевые страницы.

В общем, вы можете отключить событие DOMSubtreeModified в Chrome. Это должно дать вам доступ к измененному DOM.

Кроме того, вы уверены, что новый контент не находится в iframe?

Обновление для новой информации OP:

Но в окне предупреждения отображается «undefined» в качестве результата оценки OpenSignInPopup.

В Chrome код Greasemonkey не может взаимодействовать с такими функциями JS страницы. Вам нужно будет ввести свой код на страницу. См. этот SO-ответ для получения дополнительной информации.

...