javascript - 在内容完全加载之前不显示页面
问题描述
我正在创建一个应该以两种语言存在的登录页面。应该显示的文本位于两个 JSON 文件中,相应地称为“ru.json”和“en.json”。当用户单击“更改语言”按钮时,将执行以下功能:
function changeLang(){
if (userLang == 'ru') {
userLang = 'en';
document.cookie = 'language=en';
}
else {
userLang = 'ru';
document.cookie = 'language=ru';
}
var translate = new Translate();
var attributeName = 'data-tag';
translate.init(attributeName, userLang);
translate.process();
}
其中 Translate() 如下:
function Translate() {
//initialization
this.init = function(attribute, lng){
this.attribute = attribute;
if (lng !== 'en' && lng !== 'ru') {
this.lng = 'en'
}
else {
this.lng = lng;
}
};
//translate
this.process = function(){
_self = this;
var xrhFile = new XMLHttpRequest();
//load content data
xrhFile.open("GET", "./resources/js/"+this.lng+".json", false);
xrhFile.onreadystatechange = function ()
{
if(xrhFile.readyState === 4)
{
if(xrhFile.status === 200 || xrhFile.status == 0)
{
var LngObject = JSON.parse(xrhFile.responseText);
var allDom = document.getElementsByTagName("*");
for(var i =0; i < allDom.length; i++){
var elem = allDom[i];
var key = elem.getAttribute(_self.attribute);
if(key != null) {
elem.innerHTML = LngObject[key] ;
}
}
}
}
};
xrhFile.send();
}
一切正常,但是,当用户第一次打开页面时,如果他的 Internet 连接不好,他只会看到页面中没有文字的元素。这只是 1-2 秒,但仍然很烦人。
问题是,有没有办法检查文本是否已加载并仅在这种情况下显示页面元素?
解决方案
您可以通过这种方式使用 $(document).ready()
$(document).ready(function(){
//your code here;
})
可以通过这种方式使用 JavaScript 纯加载事件
window.addEventListener('load', function () {
//your code right here;
}, false);
来源:这里
推荐阅读
- numpy - Numpy:np.abs 到底是如何工作的?
- vue.js - element-ui中的可排序问题
- html - 具有混合设计的显示柔性
- laravel - 使用 inno 安装程序创建安装程序后,我的 laravel php 桌面应用程序无法工作
- python - 将 Python 版本 3.7 降级到 3.6
- python - 如何修改代码以实现输出“12333”?现在它输出 NONE
- ios - 如何通过 Objective-C 继承泛型类
- android - 如何使应用停止时停止的后台活动
- c# - c#表单关闭后Datagrid不更新
- javascript - 带有 Sass 的 Next.js 出现错误提示“您可能需要适当的加载程序来处理此文件类型错误”