繁体   English   中英

如何加载外部.js调用产生的HTML?

[英]How can I load the HTML resulting from external .js call?

实际的“以Google身份获取”结果。

如果内容是从JS文件动态生成的,则Googlebot认为内容与访问者的浏览器完全不同(根本不会为其编制索引)(请参见上图)。 假设我有以下代码:

<body>
<div>Bunch of Content</div>
   <script type="text/javascript" src="/js/somefile.js" />
<div>Bunch of Content</div>
</body>

页面加载后,如何在文档中显示实际的结果HTML:

<body>
<div>Bunch of Content</div>
   <p>Javascript dynamically created this string and this string.</p>
   <p>Date: timestamp by JS</p>
   <p>Other info dynamically created by JS.</p>
<div>Bunch of Content</div>
</body>

我让JS进行繁重的工作来专门为页面动态生成一些内容。 问题是,因为内容是在JS文件中生成的,所以内容永远不会加载到DOM中以供搜寻器索引。

有没有办法做到这一点? 谢谢!

Google CAN可以为动态内容编制索引,但这并不意味着它将为该内容编制索引或将其显示在搜索结果中,因为它通常仅在负面方面(例如黑帽SEO做法)中进行查找,尽管对于某些网站而言决定将其用作索引(对于Google如何处理此索引,这是一个盲目的猜测,因为他们没有透露此类细节)。

如果您的JS发出AJAX请求,并且您是API的所有者,或者您是从请求中调用的任何端点,那么最好的选择是将结果缓存在服务器端,然后修改HTML页面(应该是动态的),以便在发送到浏览器的HTML中呈现最新的缓存结果,但包装在带有不透明CSS规则(如opacity: 0; )的容器标签(如<div> )中 因此默认情况下,该内容对用户不可见,应将其更改为opacity: 1; 一旦加载了最新的HTML,就可以通过您的JS文件访问。

您可以使用jQuery完成此操作,如以下示例所示:

 $(document).ready(function() { var el = "<section>Dynamically added content</section>"; $('.a').after(el); }) 
 div { padding: 10px; background-color: #ccc; } section { padding: 10px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="a">Bunch of Content</div> <div>Bunch of Content</div> 

更新 :如果您正在使用Ajax从服务器获取数据,那么您将在返回数据对象的代码中包含更新。 您可以扩展它以迭代获得的值。

$.getJSON('[Your url]', { param: 'value' },
    function (data) {
       var el = "<section>" + data.value + "</section>";
       $('.a').after(el);
     });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM