首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从react-snap prerender中排除内部通信脚本

如何从react-snap prerender中排除内部通信脚本
EN

Stack Overflow用户
提问于 2019-04-11 00:06:07
回答 1查看 624关注 0票数 1

我想从react-snap prerender构建中排除内部通信脚本(我认为是JS和CSS,但有400KB的字符串化代码)。

所有其他脚本已经被排除在外,但内部通信不能,并正在扰乱我的预渲染和搜索引擎优化,并使预渲染脚本远远大于需要的。

我在package.json中使用以下命令设置了exclusion参数:

"reactSnap":{ "destination":“构建/预渲染”,"removeScriptTags":true },这不包括所有其他脚本。

在index.html中使用以下任一方式加载内部通信:

代码语言:javascript
复制
   window.intercomSettings = {       app\_id: 'APP\_ID'     };      

( s=d.createElement('script');s.type='text/javascript';s.async=true;(){var w=window;var ic=w.Intercom;if(s=d.createElement(‘script’);s.type=‘text/javascript’;s.async=true;var w=window;var ic=w.Intercom;if);}else{var d=document;var w=window;var ic=w.Intercom;if(){var functions.src='https://widget.intercom.io/widget/‘+ 'APP_ID';var x=d.getElementsByTagName('script');x.parentNode.insertBefore(s,x);};if(w.attachEvent){w.attachEvent('onload',l);}s.src={w.addEventListener(’load‘,l,false);})();

或者子组件中的react-intercom组件,通过:>对讲机appID= 'APP_ID'/>

任何帮助都将不胜感激--谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-07-30 00:24:55

我也有同样的问题。您可以通过查看用户代理来检测预渲染:

代码语言:javascript
复制
function isPreRendering() {
    return navigator.userAgent === 'ReactSnap';
};

然后,只需将上面的整个脚本放在一个if (!isPreRendering)块中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55616945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档