2012-05-25 2 views
3

Как заголовок, мой вопрос заключается в том, как выводить (скажем, сохранять в виде текстового файла на серверном компьютере или передавать результат какой-либо другой функции php с помощью ajax) весь контент DOM на странице?Как вывести DOM после загрузки javascript?

Я домашнее задание, я попытался скручивание может просто выход все содержимое DOM с помощью «свернуться http://google.ca> dom.txt» Однако этот подход не будет сохранять содержимое, Javascript, сгенерированные, другими словами, Javascript код не будет запустить. Другой подход заключается в том, чтобы вставить некоторый код javascript в страницу и позволить загружать страницу на веб-сайт, который мы хотим вывести, а затем использовать код javascript для сохранения всего файла DOM после того, как все будет загружено.

Я не уверен, может ли phantom.js выполнить такую ​​работу, если да, то как?

Любое тело может дать подробный ответ о том, как этого достичь?

Я открыт для любых решений, эта программа будет работать на моем сервере для предоставления услуг.

Благодарим вас заблаговременно.

+0

Есть ли опция jQuery? – iambriansreed

+4

Почему вы не думаете, что phantom.js может? Я думаю, это именно то, для чего. –

+0

@iambriansreed: Да, но вы действительно думаете, что «jQuery» способен на эту задачу? – Bergi

ответ

4

Почему не:

jQuery(document).ready(function($) { 
    $.post(
     '/your_filename.php', 
     'html='+$("html").html(), 
     function(response){ 
      alert(response); 
     } 
    ); 
}); 
+0

Используйте этот залог – jeschafe

+0

Прохладный, только что протестированный. Это было бы хорошим решением, если мы не будем использовать phantom.js. – cache

1

Вы можете получить содержимое элемента HTML (включая голову и тело), ​​используя document.documentElement.innerHTML. Если вам нужно все, вы можете объединить document.doctype с document.documentElement.outerHTML.

Обратите внимание, что outerHTML не совсем кросс-браузер (он работает в IE и Chrome, но не Firefox) - способ имитации outerHTML для Firefox см этот вопрос: How do I do OuterHTML in firefox?

+0

Благодарим вас за ответ. Тогда как вы можете вывести этот внутренний объект javascript? – cache

+0

Наверное, просто пойдите с сообщением jQuery, как предположил iambriansreed. Мой ответ - замена для '$ (" html "). Html()' - особенно если вам нужен тег doctype и ''. – Brilliand

+1

Я не знаком с phantom.js, но после поиска его документации вы могли бы выполнить одно и то же с помощью свойства 'WebPage.content'. – Brilliand

0

Javascript является языком на стороне клиента, поэтому его запуск на сервере потребует специализированной технологии. PHP на самом деле имеет возможность работать с материалами DOM, так как он может создавать и изменять элементы dom перед передачей клиенту. Узнайте больше об этом here.

Я не совсем уверен, что вы пытаетесь сделать, но похоже, что вы слишком стараетесь: вы отправляете код клиенту, чтобы клиент мог развернуться и отправить код обратно на сервер, чтобы сервер мог сохранить его как файл? Хотя, если это то, что вам нужно сделать, следуйте советам Brilliand и iambriansreed, чтобы зачерпнуть элементы dom с помощью Javascript/jQuery.

+0

Спасибо за ваш ответ. Все фактически завершено на сервере, даже отправляет код «клиенту», этот клиент может быть просто браузером, запускающим код в X-сеансе. – cache

+1

(фантом.js был * разработан * для запуска «без головы» или «на сервере») –

+0

@pst Я знал, что запуск javascript на сервере возможен (от чтения о проекте языка программирования «Дарт» --http: // www. dartlang.org/), но никогда не видел смысла использовать его, потому что уже существует довольно много надежных серверных языков, поэтому я никогда не рассматривал его. – hypervisor666