JavaScript.click()未在启用CloudFlare的情况下工作
我有一个HTML+CSS页面,其中有两个按钮:JavaScript.click()未在启用CloudFlare的情况下工作,javascript,html,cloudflare,Javascript,Html,Cloudflare,我有一个HTML+CSS页面,其中有两个按钮: <!-- Tab links --> <div class="text-center"> <button class="tablinks" onclick="openCity(event, 'top-reviews')" id="defaultOpen">Top reviews</button> <
<!-- Tab links -->
<div class="text-center">
<button class="tablinks" onclick="openCity(event, 'top-reviews')" id="defaultOpen">Top reviews</button>
<button class="tablinks" onclick="openCity(event, 'most-recent')">Most recent</button>
</div>
热门评论
最近的
我希望“热门评论”在默认情况下可见。因此,在页面的末尾,我放了简单的JavaScript
<script>
document.getElementById("defaultOpen").click();
</script>
document.getElementById(“defaultOpen”)。单击();
自动点击“热门评论”按钮
在我的开发环境中,一切都很好。但当将代码上载到启用CloudFlare的生产服务器时。JavaScript click()函数不起作用
我已经就此问题向CloudFlare支持部门写信,但两天后仍然没有任何回应
你对我如何调试为什么这个JavaScript不能工作有什么想法吗?或者如何通过另一种方式使“热门评论”的内容可见,而不需要访问者用鼠标点击按钮?
Cloudflare的一个常见问题是,它试图优化加载过程以加快站点速度。但有时它也会因为异步加载资源而破坏javascript
您可以通过以下步骤禁用Rocket Loader:
Speed -> Optimization -> Rocket Loader -> Off
多谢各位
你的想法行得通
我通过以下方式更改JavaScript加载:
<body onload="LoadTopReviews()">
<!-- Skipped lines -->
<script>
function LoadTopReviews() {
document.getElementById("defaultOpen").click();
}
</script>
函数LoadTopReviews(){
document.getElementById(“defaultOpen”)。单击();
}
这篇文章帮助我了解该怎么做。它到底有什么“不起作用”?有错误信息吗?这个脚本标记首先运行吗?脚本运行时DOM中是否存在该元素?页面加载期间没有错误消息。浏览器控制台内没有错误。只需不单击id为“defaultOpen”的按钮即可。我看不到该选项卡的预期内容。选项卡已关闭。如果我手动单击该选项卡,它将打开(它将变为活动状态),我将看到所需的内容。这里是我想看到的示例的截图:但我看到了:为了看到预期的内容,我必须点击按钮。我不能在这里重现这个问题。检查脚本标记是否实际运行。Cloudfare会延迟您的脚本。在
窗口加载中设置javascript
事件句柄此解决方案很可能会起作用,但实际上会关闭CloudFlare的一个基本功能。嗯,这是一个糟糕的功能,因为它会严重干扰前端代码,并在开发和生产环境之间造成不一致。虽然好处还不清楚,因为大多数网站提供的资产缓存时间很长。它只是在第一次加载时减少了一点时间。