首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >chrome,jquery .ready()未按预期触发

chrome,jquery .ready()未按预期触发
EN

Stack Overflow用户
提问于 2013-12-31 08:57:33
回答 3查看 1.9K关注 0票数 0

我正在为桌面/移动应用程序工作。jQuery $(document).ready();肯定在启动,这就是为什么应用程序能工作的原因。但是,在Chrome移动浏览器中,一个特定的函数(向一个元素添加一些动态CSS以正确放置它)没有正确触发,因此在页面加载时没有更新CSS。该函数通常触发并更新桌面浏览器中的CSS。以下是代码:

代码语言:javascript
运行
复制
$(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:

代码语言:javascript
运行
复制
<div id='header'>
   <div id='button'>&#xe600;</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%;
}
EN

回答 3

Stack Overflow用户

发布于 2013-12-31 09:13:53

Chrome中也有类似的问题: css没有应用于dom,但是当在控制台中更新或修改样式时,就会开始应用。

问题是在css文件头中发送不正确的mime类型。这是铬特有的特点,因为FF更宽容。发送“文本/css”修复问题。

希望能帮上忙。

票数 0
EN

Stack Overflow用户

发布于 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来应用以下样式:

代码语言:javascript
运行
复制
#button {
  ...
  display:inline-block; 
  vertical-align:middle;
  ...
}
票数 0
EN

Stack Overflow用户

发布于 2013-12-31 09:16:55

我认为您必须将placebook()函数放在doc ready处理程序之外的全局范围内:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
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
  });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20854596

复制
相关文章

相似问题

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