0

可能重复:
$(window).width() 在 IE9 中不起作用

我正在尝试为响应式网页设计做一些 DOM 操作。在 IE 中,这不起作用。

var w = $(document).width(); 

if (w > 940) {
console.log("If test");     
} else {
console.log("Else test");

如果我使用 window.width,它可以在 IE 中工作,但在其他浏览器中停止工作。有没有跨浏览器的方式呢?

4

3 回答 3

2
var maskWidth = window.innerWidth;
var maskHeight = window.innerHeight;

根据,$(window).width() 在 IE9 中不起作用

于 2012-10-19T21:59:30.607 回答
2

响应式设计应该在 CSS 中使用媒体查询来完成:

@media all and (max-width:940px) {
    /* some style rules that should be put in place
       if the window is smaller than 940px wide */
}
于 2012-10-19T22:01:44.213 回答
2

您的方法存在一个固有问题,那就是“响应式”是指设计响应大小的变化。通过您在此处执行的操作,您只会在浏览器加载时得到检测。

例如,假设您正在使用 iPhone 浏览该网站,并且您将手机 45 度转为横向而不是纵向。本质上,你的宽度只是改变了,但你的 width() 没有。

如果您需要使用 javascript 进行 DOM 操作并且无法使用纯 CSS 完成它(这通常是最好的方法),我建议您查看几个选项:

  1. 查看 Rob Tarr http://seesparkbox.com/foundry/responsive_web_design_and_javascript提出的 matchMedia() 方法
  2. 使用http://modernizr.com/或其他已经为您解决此问题的库。
于 2012-10-19T22:08:04.793 回答