gpt4 book ai didi

javascript - jQuery 与文档类型声明之前输出的文本进行交互

转载 作者:可可西里 更新时间:2023-10-31 23:36:02 26 4
gpt4 key购买 nike

我有一个输出 PHP 通知的 PHP 应用程序。这是在执行任何其他操作(包括 DOCTYPE 声明)之前简单地发送到浏览器中的文本。

    <br />
<b>Notice</b>: Undefined property: bla bla blap</b> on line <b>16</b><br />
<!DOCTYPE html>
...regular web page

有没有办法使用 jQuery 与此文本进行交互?它在浏览器中显示为第一件事。你如何选择上面的东西<!DOCTYPE html>在 jQuery 中?

最佳答案

您可以使用 $('body').contents() 访问元素,因为浏览器将它们解释为正文元素。当浏览器在 doctype 声明之前看到文本时,它会将该文本和头部的内容转移到主体中,因为这是尝试构建可行的 DOM 的方式,即使 html 无效也是如此。

由于浏览器重新组织了内容,您无法猜测头部的第一个元素应该是什么。此脚本允许您设置应该是头部第一个元素的元素。然后脚本将访问您设置的元素之前的元素,并为您提供有关该元素是文本节点还是 DOM 元素的信息。

您必须使用 vanilla js 与文本节点交互,但您可以为其他节点使用 jQuery。

// the script needs to know what should have been the first element in the head
const firstElementInHead = $( 'title' );
// remove all nodes prior to the intended content
$('body').contents().each( function() {
if ( $(this).index() < firstElementInHead.index() ) {
$(this).remove();
}
});

<br />
<b>Notice</b>: Undefined property: bla bla blap on line <b>16</b><br />
<!doctype html>

<html lang="en">

<head>
<title>The Broken Page</title>
<meta charset="utf-8">


<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
// the script needs to know what should have been the first element in the head
const firstElementInHead = $('title');
// log the nodes that apear prior to the intended content
$('body').contents().each(function() {
if ($(this).index() < firstElementInHead.index()) {
if (this.nodeType == Node.TEXT_NODE) {
console.log('This is a text node. You can change it by setting this.nodeValue, remove it by calling this.remove(), or other vanilla JS operations.');
console.log(this);
} else {
console.log('This is a DOM element. You can interact with it using jQuery the same way you interact with any normal DOM element.');
console.log(this);
}
}
});
</script>
</head>

<body style="padding:0; margin:0;">
<p style="padding:0; margin:0; background:red;">Test</p>
</body>

</html>

关于javascript - jQuery 与文档类型声明之前输出的文本进行交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53966612/

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