如何通过编程找到(使用Node)如何在浏览器中呈现给定的字符串?

时间:2018-10-30 08:05:39

标签: html node.js dom browser whitespace

如何使用Node / JS以编程方式获取浏览器呈现的字符串,就像在浏览器窗口中复制所有内容一样?

例如,对于给定的HTML源(注意“ a”和“ z”之间的空格):

<html><head></head><body>a z</body>

它在Chrome中以单个空格呈现:

enter image description here

如何用单个空格a z获得此字符串?

我尝试使用Cheerio和Jsm,但是在将<html><head></head><body>a z</body>加载为字符串并查询body的内容之后,我得到了原始代码,其中有很多空格。

谢谢。

1 个答案:

答案 0 :(得分:0)

很好的问题,但是我认为没有可行的方法。

首先,本文When does white space matter in HTML?对发生的事情进行了详尽的解释。

由于空格不会移到任何地方,而只能由浏览器表示,因此很难在服务器端进行故障排除。原因有:

  • 您不知道它将在哪个浏览器中呈现,甚至可能是Lynx,它将显示空格还是您不知道的空格。

  • 这意味着,如果可能的话,您将不得不在野外的每个浏览器上进行测试。

  • 例如,服务器端呈现(SSR)技术在服务器端部分地应用/呈现页面,但是仍然因为实际上没有设备可以显示页面,所以它是部分的。因此最有可能获得相同的空格。

想象中可能的解决方案是使用KarmaJS之类的东西,在服务器端安装一些无头浏览器,并执行一些测试用例,以便KarmaJS可以控制浏览器来呈现页面,并且也许您将能够访问渲染,CSS应用以及希望进行空间修剪的DOM。我不确定,这将是一组有限的浏览器。

另一个可能的解决方案是使用WebKit或Blink引擎,或者也许使用Electron,以某种方式通过API尝试获取该DOM。