Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何加载外部.js调用生成的HTML?_Javascript_Html_Indexing_Web Crawler - Fatal编程技术网

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

Javascript 如何加载外部.js调用生成的HTML?,javascript,html,indexing,web-crawler,Javascript,Html,Indexing,Web Crawler,如果内容是从JS文件动态生成的(见上图),Googlebot对内容的看法与访问者不同(根本不编制索引)。假设我有以下代码: <body> <div>Bunch of Content</div> <script type="text/javascript" src="/js/somefile.js" /> <div>Bunch of Content</div> </body> 一堆内容 一堆内容 加载页

如果内容是从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>

一堆内容
Javascript动态创建了这个字符串和这个字符串

日期:JS提供的时间戳

JS动态创建的其他信息

一堆内容
我让JS专门为页面动态生成一些内容。问题是,因为内容是在JS文件中生成的,所以内容永远不会加载到DOM中,以供爬虫索引


有办法做到这一点吗?谢谢

您可以使用jQuery来实现这一点,如下例所示:

$(文档).ready(函数(){
var el=“动态添加内容”;
$('.a')。在(el)之后;
})
div{
填充:10px;
背景色:#ccc;
}
部分{
填充:10px;
}

一堆内容

大量内容
您可以使用jQuery来完成这项工作,如下面的示例所示:

$(文档).ready(函数(){
var el=“动态添加内容”;
$('.a')。在(el)之后;
})
div{
填充:10px;
背景色:#ccc;
}
部分{
填充:10px;
}

一堆内容

大量内容
谷歌可以索引动态内容,但这并不意味着它将索引动态内容,或在搜索结果中显示动态内容,因为它通常只在搜索负面内容(如黑帽搜索引擎优化实践)时查找动态内容,尽管对于某些网站,它可能决定使用动态内容作为索引(当谈到谷歌如何处理这一问题时,这确实是一个盲目的猜测,因为他们没有透露此类细节)


如果您的JS发出AJAX请求,并且您是API或从请求中调用的任何端点的所有者,那么您最好将结果缓存在服务器端,并修改HTML页面(应该是动态的),以便将最新缓存的结果呈现在发送到浏览器的HTML中,但包装在容器标记中(就像一个
)使用类似于
opacity:0;
的无关紧要的CSS规则,默认情况下用户看不到内容,加载最新HTML后,JS文件应将其更改为
opacity:1;

谷歌可以为动态内容编制索引,但这并不意味着它将为其编制索引,或在搜索结果中显示,因为它通常只显示为或者它在搜索负面方面(比如黑帽搜索引擎优化实践),尽管对于一些网站,它可能会决定使用它作为索引(这是一个盲目的猜测,当涉及到谷歌如何处理这一问题时,因为他们没有披露这类细节)


如果您的JS发出AJAX请求,并且您是API或从请求中调用的任何端点的所有者,那么您最好将结果缓存在服务器端,并修改HTML页面(应该是动态的),以便将最新缓存的结果呈现在发送到浏览器的HTML中,但包装在容器标记中(就像一个
)使用类似于
opacity:0;
的无关紧要的CSS规则,默认情况下用户看不到内容,加载最新HTML后,JS文件应将其更改为
opacity:1;

那么你是在问如何将HTML元素附加到DOM中吗?本质上,我希望JS的结果能够被爬虫看到。爬网爬虫只看到第一个代码示例,因为HTML从未实际加载到页面中,它是在外部运行的,仅由浏览器显示。因此,你是在问如何将HTML元素附加到DOM中吗?本质上,我希望JS的结果能够被爬虫看到。爬虫只看到第一个代码示例,因为HTML从来都不是实际的它被加载到页面中,在外部运行,仅由浏览器显示。感谢您的回答Marcos。您的示例适用于预定义的字符串。我的问题是如何运行.js文件中的所有函数和逻辑,然后在页面上显示HTML结果,以供爬虫查看。@unifiedac这是一个更广泛的问题,而且非常有用取决于您使用什么框架从服务器获取数据。我添加了一个使用Ajax的更新作为示例,以便您了解您可以做什么。感谢您的回答Marcos。您的示例适用于预定义的字符串。我的问题是如何运行.js文件中的所有函数和逻辑,然后在这是一个更广泛的问题,很大程度上取决于您使用什么框架从服务器获取数据。我添加了一个使用Ajax的更新作为示例,以便您了解您可以做什么。