javascript - 是否可以在文档准备好之前进行一些客户端 DOM 操作?
问题描述
我试图找到一种方法(如果可能的话)在渲染时和 DOM 完全加载之前使用 javascript 向元素添加一些属性。我知道,这听起来适得其反,但让我给你一些背景:
- 我在一个极其有限的模板平台上工作,它可以让我访问一些页面变量,但它们需要一些小的字符串操作。我不能利用任何 ASP 预处理,所以它必须发生在客户端。
- 具体来说,我试图在Googlebot 扫描文档内容之前将Schema.org微数据标记添加到元素中。
- 本质上,我需要将属性值从 修改
$5.99
为5.99
。
这是我最近的尝试,它使 DOM 修改正确,但不是在 Google 的丰富代码段验证器处理页面之前:
<div class="pitinfo"><div class="padleft padright"><%Product.BasePrice%></div></div>
<!-- at page bottom -->
<script type="text/javascript">
(function() {
var pricesting = "<%Product.BasePrice%>";
var price = pricesting.slice(1);
$('.pitinfo').attr('itemprop', 'price');
$('.pitinfo').attr('content', price);
})();
</script>
加载后我得到了这个<div class="pitinfo" itemprop="price" content="9.99">$9.99</div>
,但是 Rich Snippet Testing 工具告诉我price
没有设置。
我已经尝试在我的模板代码中使用 ASP,但托管服务提供商不允许。
是否可以在文档渲染流程中的某个时间进行 DOM 修改?
解决方案
可以<script>
在<body>
. 标记内的 JavaScript 在其之后的 HTML 之前加载,因此您可以在加载 HTML/JS 的其余部分之前编辑元素的值。
例如:
<div>
<div id="element" value="$5.99"></div>
<script>
var element = document.getElementById("element")
element.value = 5.99;
</script>
</div>
你可以在这里查看