存档

文章标签 ‘javascript’

js 获取网页的缩放比例

2016年10月8日 没有评论

随着硬件的发展,屏幕分辨率做的越来越大,相同的环境下,分辨率越高,视觉上看起来文字就越小。

操作系统本身提供了DPI的缩放,但是这个操作并不影响网页里的内容。值得幸庆的是,现代浏览器提供了网页内容的缩放功能。

那么,如果我们想获取浏览器的缩放比例以加载不同的样式和脚本,要怎么做呢?

现代浏览器提供了标准接口,window.devicePixelRatio 表示为设备上物理像素和设备独立像素的比例。

对于IE而言,IE 提供了 window.screen.deviceXDPI 和 window.screen.logicalXDPI 两个属性,deviceXDPI 就是对应的设备上的物理像素,而 logicalXDPI 就是对应了设备独立像素的比例。

下面就是代码了:

function getPageZoom() {
var ratio = 0,
screen = window.screen,
ua = navigator.userAgent.toLowerCase();

if (window.devicePixelRatio !== undefined) {
//现代浏览器直接支持
ratio = window.devicePixelRatio;
}
else if (~ua.indexOf(‘msie’)) {
//兼容低版本的IE浏览器
if (screen.deviceXDPI && screen.logicalXDPI) {
ratio = screen.deviceXDPI / screen.logicalXDPI;
}
}

if (ratio) {
ratio = Math.round(ratio * 100);
}

return ratio;
};

现在就可以根据自己的业务来做不同的处理了。

分类: 一句话, 日常 标签:

vs 2012 中js的intellisense智能提示

2012年9月17日 没有评论

在前面的博客里提及 Visual Studio 2012 RTM 已经出来有一段时间了,在 vs 以前的版本里,对于用户的智能提示做的还不够好,在 2012 的版本里大有改善,今天我们要分享的是如何在  vs 2012 里使用用户 js 的 intellisense 智能提示。

使用起来还是很简单的,比如说项目中有个 common.js 文件,这个时候只需要添加一个名为  common.intellisense.js 的文件就可以了。IDE 可以自动发现,在开始的时候我还不清楚,专门在页面里引用了下,结果运行时总报告错误,后来才发现这个技巧。

场景:在common.js 文件里有一个 load 方法,有2个参数 ,格式如下:

function load(url,charset){}

要实现 intellisense 智能提示,我们只需要在 common.intellisense.js 文件里添加下面的方法即可:

intellisense.annotate(window,{     “load”:function(){
/// <signature>
///   <summary>加载 js 文件</summary>
///   <param name=”url” type=”String”>js 文件的路径</param>
///   <param name=”charset” type=”String”>js 文件的字符编码,例如 utf-8</param>
///   <returns type=”Object” />
/// </signature> }, });

简单地说,我们只需要完善 intellisense.annotate 方法即可,该方法接受 2 个参数,第一个参数为想要进行智能提示的对象,示例中使用的是 window 对象,也可以是其它的对象;第二个参数是一个 json 对象,传递的是智能提示的参数列表。

智能提示以 signature 包含,常见的有 3个,summary 描述的是该方法的功能;param 是具体每一个参数的描述,还可以包括类型;return 是返回类型的描述。从事 C#/asp.net 、Java 的同学看着是不是觉得很熟悉呀~

此时,我们在页面中输入 load 时,就会出现描述的内容,输入参数时,就会提示参数相关的信息,感觉太酷了。

如果我们在文件头添加 reference 引用,就可以脱离上文中 js 代码必须和智能提示文件文件名对应的限制了,例如 /// <reference path=”Scripts/jquery-1.7.1-intellisense.js”/> 。如果你愿意,可以同时引入多个 reference 文件,需要提醒各位的是这里的斜杠可是 3 个哟,不要输入错了。

看起来很简单,对不对。如果有什么问题,快给我留言吧。