在文档准备好之前是否可以进行一些客户端DOM操作?

时间:2019-03-30 00:36:56

标签: javascript jquery dom googlebot google-rich-snippets

我正在尝试找到一种方法(如果可能),以便在渲染时以及在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修改?

1 个答案:

答案 0 :(得分:0)

可以在<script>内插入<body>标签。标签内的JavaScript在加载HTML之前先加载,因此您可以在加载HTML / JS的其余部分之前编辑元素的值。
例如:

<body>
    <div id="element" value="$5.99"></div>
    <script>
        var element = document.getElementById("element")
        element.value = 5.99;
    </script>
</body>

您可以签出here