我正在为桌面/移动应用程序工作。jQuery $(document).ready();肯定在启动,这就是为什么应用程序能工作的原因。但是,在Chrome移动浏览器中,一个特定的函数(向一个元素添加一些动态CSS以正确放置它)没有正确触发,因此在页面加载时没有更新CSS。该函数通常触发并更新桌面浏览器中的CSS。以下是代码:
$(document).ready(function() {
function placeBook() {
var h = $('#header').css('height');
$('#button').css('height', h);
$('#button').css('line-height', h);
}
placeBook();
$(window).resize(function() {
placeBook();
});
});函数placeBook()不会在页面第一次加载时更新#button div的CSS。但是,函数通常在调整窗口的大小时触发,如代码中所指定的那样。只有在页面初始加载时,它才会在移动浏览器上失败。看这些党卫军:
桌面第一次加载(FF响应设计视图):

移动第一次加载(Chrome):

正如您所看到的,这个想法是书的图标是垂直居中的标题。当然,任何帮助都是非常感谢的。
下面是HTML/CSS:
<div id='header'>
<div id='button'></div>
</div>
#header {
position: fixed;
top: 0;
width: 100%;
font-size: 120%;
text-align: center;
}
#button {
position: absolute;
top: 0;
left: 0;
padding: 0 1%;
}发布于 2013-12-31 09:13:53
Chrome中也有类似的问题: css没有应用于dom,但是当在控制台中更新或修改样式时,就会开始应用。
问题是在css文件头中发送不正确的mime类型。这是铬特有的特点,因为FF更宽容。发送“文本/css”修复问题。
希望能帮上忙。
发布于 2013-12-31 09:14:11
根据这个答案:window.load doesn't fire always on chrome?
在chrome上使用$(window).load();似乎不安全,特别是在DOM修改方面。相反,使用$(document).ready();!我创建了一个简单的小提琴,以确认负载并不总是在chrome:http://jsfiddle.net/KvD6G/中触发。
此外,不要用javascript来解决这个问题,而是尝试使用css来应用以下样式:
#button {
...
display:inline-block;
vertical-align:middle;
...
}发布于 2013-12-31 09:16:55
我认为您必须将placebook()函数放在doc ready处理程序之外的全局范围内:
function placeBook() {
var h = $('#header').css('height');
$('#button').css({
'height': h,
'line-height': h
});
}
$(window).load(function() {
placeBook();
$(window).resize(function() {
placeBook();
}).resize(); //<----invokes the resize function immediately
});虽然你没有提到你的doc ready handler
function placeBook() {
var h = $('#header').css('height');
$('#button').css({
'height': h,
'line-height': h
});
}
$(function(){ //<------------------doc ready handler
$(window).load(function() {
placeBook();
$(window).resize(function() {
placeBook();
}).resize(); //<----invokes the resize function immediately
});
});https://stackoverflow.com/questions/20854596
复制相似问题