gpt4 book ai didi

javascript - Knockout.js - 如何查看生成的 html

转载 作者:行者123 更新时间:2023-11-30 12:14:55 24 4
gpt4 key购买 nike

我的项目使用 knockout 模板来渲染 html,所以我的 html 文件只包含一堆 knockout 语法和 javascript 函数。在浏览器中打开 html 后,它显示了人们通常会在网页上看到的常规内容。我的问题是,如何查看显示页面的 HTML 源代码?

准确的说:比如这里有一个完整的html源码,你可以测试一下:

<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.aspnetcdn.com/ajax/knockout/knockout-3.1.0.js" type="text/javascript"></script>
</head>
<body>

<p>First name: <strong data-bind="text: firstName()"></strong></p>
<p>Last name: <strong data-bind="text: lastName"></strong></p>

<p>Full name: <strong data-bind="text: fullName"></strong></p>

<script type="text/javascript">


function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");

this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName(); //call the observable as a function with ()
}, this);

}
ko.applyBindings(new AppViewModel());

</script>
</body>
</html>

在结果中,我在浏览器中看到以下内容:

==========

名字:伯特

姓氏:伯廷顿

全名:伯特伯廷顿

==========

出于调试目的,我需要查看此 html 的结果 源 html。但是,如果我右键单击页面并显示源代码,我只会看到我编写的 html 代码,而不是浏览器呈现的代码。请注意,上面的示例已简化;我的实际代码非常大且复杂,我需要将结果作为 html 标记查看以进行调试。所以,我需要看到的(用于代码检查)是这样的:

<p>First name: <strong>Bert</strong></p>
<p>Last name: <strong>Bertington</strong></p>
<p>Full name: <strong>Bert Bertington</strong></p>

最佳答案

使用您的浏览器开发者工具。在 Chrome 中,这将是 F12。他们应该有一个工具可以让您检查实际呈现的 HTML。在 Chrome 中,它位于名为 Elements 的选项卡中。从那里您可以根据需要查看 HTML 展开和折叠节点。还有一个工具(放大镜)可以让您直接在屏幕上选择和元素,它会在控制台中显示相应的 HTML 位。

否则,一个简单的 document.body.innerHTML 将转储整个呈现的 HTML。您也可以从调试控制台执行此操作。

一个简单的例子,在这个 fiddle 中,使用 Chrome(其他浏览器具有类似的功能):

  • 按 F12
  • 选择“元素”选项卡
  • 点击放大镜图标
  • 在结果窗口中单击其中一个元素
  • 注意控制台中呈现的 HTML:

<!-- Original -->
<div data-bind="foreach:items">
<div data-bind="text:$data"></div>
</div>

<!-- Rendered -->
<div data-bind="foreach:items">
<div data-bind="text:$data">one</div>
<div data-bind="text:$data">two</div>
<div data-bind="text:$data">tree</div>
</div>

现在如果你想要一个“干净”的非实时版本的呈现文本(不会被数据绑定(bind)的),那么你应该能够将 html 复制到一个新元素并删除 data-bind 属性.例如,使用 jQuery(尽管毫无疑问可以使用 vanilla JS 完成):

function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");

this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName(); //call the observable as a function with ()
}, this);

}
ko.applyBindings(new AppViewModel());

var s = $("#source").html();
var t = $("#target");
t.html(s);
t.find("[data-bind]").removeAttr("data-bind");
$("#html").text(t.html());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h4>Original data-bound</h4>
<div id="source">
<p>Last name: <strong data-bind="text: lastName"></strong></p>

<p>Full name: <strong data-bind="text: fullName"></strong></p>
</div>
<hr/>
<h4>Non-live rendered copy</h4>
<div id="target">
</div>
<hr/>
<h4>Raw rendered HTML</h4>
<div id="html">
</div>

请注意,这并不是万无一失的,因为它不会找到不在数据绑定(bind)属性中的 knockout 位。例如,如果我使用 <!-- ko foreach:items -->

关于javascript - Knockout.js - 如何查看生成的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32660275/

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