我有一个onerror事件,它捕获异常的网址&行号。现在我需要从行号中获取元素的HTML。我如何查看DOM并获取特定行号的内容?通过查找行号获取元素
4
A
回答
4
Rory的评论是差不多没错。这不一定是不可能的,但获得有效的东西将是一个彻头彻尾的破解。原因如下:
当您使用document.documentElement.outerHTML获取页面的HTML时,您开始遇到格式问题,因为不同的浏览器以不同的方式处理空白区域。考虑以下页面:
<html>
<head>
<title>Test Get HTML by Line Number</title>
<script type="text/javascript">
window.onload = function()
{
var lines = document.documentElement.outerHTML;
console.log(lines);
};
</script>
</head>
<body>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse sit amet venenatis metus. Sed lobortis semper nisl,
eget mollis nisl rutrum sed. Duis iaculis pharetra eros, eget imperdiet felis aliquet non. Aliquam non viverra eros, vitae
malesuada lacus. Sed ligula sapien, volutpat id diam ac, bibendum imperdiet lacus. Proin turpis lorem, blandit nec pretium
in, lobortis eu erat. Cras ultrices sapien nec quam luctus, nec dictum ante semper.</p>
</body>
</html>
在Chrome和Firefox,结果在JavaScript控制台看起来是这样的:
<html><head>
<title>Test Get HTML by Line Number</title>
<script type="text/javascript">
window.onload = function()
{
var lines = document.documentElement.outerHTML;
console.log(lines);
};
</script>
</head>
<body>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse sit amet venenatis metus. Sed lobortis semper nisl,
eget mollis nisl rutrum sed. Duis iaculis pharetra eros, eget imperdiet felis aliquet non. Aliquam non viverra eros, vitae
malesuada lacus. Sed ligula sapien, volutpat id diam ac, bibendum imperdiet lacus. Proin turpis lorem, blandit nec pretium
in, lobortis eu erat. Cras ultrices sapien nec quam luctus, nec dictum ante semper.</p>
</body></html>
但在IE浏览器,它看起来像这样:
<HTML><HEAD><TITLE>Test Get HTML by Line Number</TITLE>
<SCRIPT type=text/javascript>
window.onload = function()
{
var lines = document.documentElement.outerHTML;
console.log(lines);
};
</SCRIPT>
</HEAD>
<BODY>
<P>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse sit amet venenatis metus. Sed lobortis semper nisl, eget mollis nisl rutrum sed. Duis iaculis pharetra eros, eget imperdiet felis aliquet non. Aliquam non viverra eros, vitae malesuada lacus. Sed ligula sapien, volutpat id diam ac, bibendum imperdiet lacus. Proin turpis lorem, blandit nec pretium in, lobortis eu erat. Cras ultrices sapien nec quam luctus, nec dictum ante semper.</P></BODY></HTML>
我可以想到一些可能会让你得到你想要的结果的东西,但是我认为它真的很冒险;所以我锣建议你不要做,我不会倒一吨的精力投入到它:
复制你的整个页面,从一开始的HTML标签到结束HTML在这样的页面上的最后一个注释标记:
<html> <head> <title>Test Get HTML by Line Number</title> </head> <body> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse sit amet venenatis metus. Sed lobortis semper nisl, eget mollis nisl rutrum sed. Duis iaculis pharetra eros, eget imperdiet felis aliquet non. Aliquam non viverra eros, vitae malesuada lacus. Sed ligula sapien, volutpat id diam ac, bibendum imperdiet lacus. Proin turpis lorem, blandit nec pretium in, lobortis eu erat. Cras ultrices sapien nec quam luctus, nec dictum ante semper.</p> </body> </html> <!-- <html> <head> <title>Test Get HTML by Line Number</title> </head> <body> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse sit amet venenatis metus. Sed lobortis semper nisl, eget mollis nisl rutrum sed. Duis iaculis pharetra eros, eget imperdiet felis aliquet non. Aliquam non viverra eros, vitae malesuada lacus. Sed ligula sapien, volutpat id diam ac, bibendum imperdiet lacus. Proin turpis lorem, blandit nec pretium in, lobortis eu erat. Cras ultrices sapien nec quam luctus, nec dictum ante semper.</p> </body> </html> -->
获取最后一个注释的内容(这应该帮助:Get text inside HTML comment tag?)。当我在公认的答案中尝试了小提琴时,它在Chrome,Firefox和IE中提供了格式正确的空格。
拆分结果的换行符( “\ n”)
查找你的行号,和中提琴!你走了。
所以,就像我之前警告过的那样。这个“解决方案”膨胀了你的HTML并且是一个彻头彻尾的破解。但这是我能想到的唯一方法,那就是保留空白区域并让你找到你想要的确切行数。
我希望这会有所帮助,请不要相信我,如果你最终使用黑客。
相关问题
- 1. SmartGWT通过编号查找元素
- 2. js通过编号获取元素
- 3. 无法通过编号获取元素
- 4. 通过名称/编号获取元素
- 5. angularjs - 通过编号查找元素内的元素
- 6. 通过mysql查询获取行号
- 7. 通过ClientInstanceName获取元素
- 8. 通过Id获取元素
- 9. 如何通过获取引用的属性来查找元素?
- 10. 通过其他元素通过ID获取HTML元素
- 11. 如何通过.get()获取父元素一次获取元素
- 12. 当ID包含方括号时,通过ID查找DOM元素?
- 13. 通过onclick函数查找元素?
- 14. AngularJS - 通过属性值查找元素
- 15. Python lxml通过id-tag查找元素
- 16. 通过XPath查找元素后退
- 17. Sikuli:通过Id(或xpath)查找元素
- 18. 华廷 - 查找表通过元素
- 19. Appium - 通过Xpath查找元素
- 20. 通过ajx属性查找元素
- 21. 在Appium中通过id查找元素
- 22. 查找元素通过其子jQuery中
- 23. 通过变量查找元素
- 24. JQuery通过背景色查找元素
- 25. 通过数据标识查找元素
- 26. 通过jQuery的克隆查找元素
- 27. WebDriver:通过CSSSelector或XPath查找元素
- 28. 通过javascript查找元素时出错
- 29. 通过文本查找元素
- 30. 通过尖括号中的id获取元素
这几乎是不可能的,因为它完全取决于浏览器中的解释器。大多数内置的DOM检测工具甚至无法获得正确的行号。 –
尝试 htmlLines = html.split(“\ n”); htmlLines [lineNumber]是你在找什么 其中html是url的全部内容。 – vipulsharma