gpt4 book ai didi

javascript - JavaScript 中如何获取调用函数的行?

转载 作者:行者123 更新时间:2023-12-03 12:13:55 25 4
gpt4 key购买 nike

下面的代码显示了我几乎完整的页面源代码(没有文档类型)和调用 test() 的行号。因为代码不包含 doctype,所以当我执行alert(code[line]) 时,我没有得到正确的行。

<script>
function test(what)
{
var err = new Error;
var line = err.stack.split("\n")[1].split(':')[2];
var code = document.documentElement.outerHTML.split("\n");
console.log(code);
alert(line);
}

test('hello there');
<script>

我如何获得“测试(‘你好’);”从我的测试函数作为字符串?

问题出在行编号上。我的行返回与源文件中相同的正确行号,但我的代码返回具有不同编号的页面源(它缺少 DOCTYPE 并具有不同的换行符)。那么问题来了:如何获取“真实”的页面源码?

最佳答案

解决方案是不查看整个 HTML 文档,而是查看正确的 script 元素。它可以工作,但在使用它之前您需要小心:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<script>
function test(what) {
var err = new Error;
console.log(err.stack.split("\n"))
var line = err.stack.split("\n")[2].split(':')[1];
var script = document.scripts[0];
var code = (script.innerText||script.textContent).split(/<br>|\n/);
console.log(line);
console.log(code, code.length);
console.log(code[+line]); // this logs "test('hello there');"
}

test('hello there');
</script>
</body>
</html>

要做的第一件事可能是为脚本元素提供一个 id,而不是依赖于数字。

我真的不会在一些简短的测试中使用这样的东西。

Demonstration (click "Run with JS")

关于javascript - JavaScript 中如何获取调用函数的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24825393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com