2016-12-16 12 views
5

Я работаю над решением, снимающим скриншоты веб-сайтов. Я использую пример по умолчанию, упомянутый в slimerjs.org, чтобы выполнить эту работу.Как найти высоту всей веб-страницы?

Экранные снимки великолепны с этим инструментом, но мне нужно снимать снимки с высоты экрана. При захвате экранов веб-сайтов, таких как http://www.yellowpages.com, я могу получить полноразмерные экраны, не указывая ни одного параметра высоты.

Но когда я пытаюсь этот URL: http://votingbecause.usatoday.com/

я только получаю скриншот разрешения набора (по умолчанию: 1920x1080), я не могу получить полные изображения длины.

Поскольку я использую slimerjs, я могу манипулировать dom с помощью jQuery. Мне нужно найти полную высоту сайта, так что я могу взять скриншот этой резолюции

Я попытался

  • document.height()
  • document.body.scrollheight
  • screen.height
  • $ (документ) .height()
  • (и многие другие, которые я нашел)

Но все они только дали высоту видового экрана (на веб-сайте)

Вопрос в том, как найти полную прокручиваемую высоту веб-сайта?

+0

Чтобы задать хороший вопрос, вы должны поставить соответствующий исходный код и всю информацию непосредственно в вопрос. Когда связанный сайт опускается, вопрос становится бесполезным. –

+0

Я извиняюсь за это, но главный вопрос заключался в том, чтобы получить высоту веб-сайта, я думаю, я не должен был упоминать, почему мне нужен параметр высоты –

ответ

4

Чтобы быть более общим и найти высоту любой страницы вы могли бы просто найти самый высокий DOM Node на текущей странице с простой рекурсией:

;(function() { 
    var pageHeight = 0; 

    function findHighestNode(nodesList) { 
     for (var i = nodesList.length - 1; i >= 0; i--) { 
      if (nodesList[i].scrollHeight && nodesList[i].clientHeight) { 
       var elHeight = Math.max(nodesList[i].scrollHeight, nodesList[i].clientHeight); 
       pageHeight = Math.max(elHeight, pageHeight); 
      } 
      if (nodesList[i].childNodes.length) findHighestNode(nodesList[i].childNodes); 
     } 
    } 

    findHighestNode(document.documentElement.childNodes); 

    // The entire page height is found 
    console.log('Page height is', pageHeight); 
})(); 

Вы можете проверить его на сайте образца (http://votingbecause.usatoday.com/), вставив этот скрипт в консоль DevTools.

Наслаждайтесь!

P.S. Поддерживает содержимое iframe.

+2

вы спасатель жизни! большое спасибо :) –

+0

просто сомневаюсь, это работает с сайтами, использующими iframe? –

+1

Да, он работает с iframes –

0
$("body").height(); 

является то, что вам нужно

+0

Я пробовал это, я получаю только высоту веб-сайта, высота вышеуказанного веб-сайта должна быть около 5000 пикселей. –

+0

Вторая страница - 1536 пикселей, а не 5000 пикселей. – iHasCodeForU

+0

@iHasCodeForU, как вы получили это значение, скажите: D , когда я установил 5000 px в инструменте, который я сделал, я получил полный снимок экрана сайта, поэтому я предположил, что он был 5000px –

0
$(window).height(); 

получить текущую высоту окна ..

2

содержание в сайте в следующем DIV

<div class="site-wrapper flex column"> 

использовать этот код, чтобы получить его высота

document.querySelector(".site-wrapper").scrollHeight 
+0

Это замечательно, но есть ли общее решение для поиска высоты, поэтому оно работает и для других сайтов? –

+0

Насколько я знаю, нет прямого способа его достижения. На каждом веб-сайте будет свой контейнер для контента, и они могут быть вложены в другие элементы, например, на сайте. –

 Смежные вопросы

  • Нет связанных вопросов^_^