自适应图片大小的弹出窗口


Posted in Javascript onJuly 27, 2006

很多时候我们需要提供这样的功能给访问者:当访问者点击页面中的缩略图时,其对应的全尺寸图片将显示在一个新的弹出窗口中供访问者查看。

实现此功能的最简单作法是用以下HTML代码创建一个图像链接:

<a href="fullsize.jpg" target="_blank"><img src="small.jpg"></a> 

其中<a>标记的href属性指定全尺寸图片的URL,target属性设置为_blank指定在新窗口中显示该图片;<img>标记的src属性指定缩略图的URL。

如果我们想对显示全尺寸图片的窗口的外观进行某些控制(比如希望弹出窗口的高度、宽度能与全尺寸图片的大小匹配时),则可调用 window.open 方法,该方法接收三个参数,分别指定要打开文件的URL,窗口名及窗口特性,在窗口特性参数中可指定窗口的高度、宽度,是否显示菜单栏、工具栏等。以下代码将显示全尺寸图片在一个没有工具栏、地址栏、状态栏、菜单栏,宽、高分别为400、350的窗口中:
<a href="fullsize.jpg" onClick="window.open(this.href,'', 'height=350,width=400,toolbar=no,location=no,status=no,menubar=no');return false"><img src="small.jpg"></a>

这里就提出了个问题,如果所有全尺寸图片都具有统一的大小(比如都是400x350),那么以上代码适用于所有的缩略图片链接(只是href属性指向的全尺寸图片文件不同)。但如果全尺寸图片的大小并不统一,还用以上代码则我们需要先取得每幅全尺寸图片的大小,然后在window.open方法的窗口特性参数中一一设置height和width为正确的值,在图片数量较多的情况下,这显然效率太低了。那么是否有一劳永逸的方法,即让弹出窗口能自动适应要显示图片的大小?通过研究,发现可以使用 DHTML 中的 Image 对象来达到我们的目的,Image 对象可动态装载指定的图片,通过读取其 width 和 height 属性即能获得装入图片的大小,以此来设置弹出窗口的大小,即可实现自适应图片大小的弹出窗口了。下面即是实现代码:
<script language="JavaScript" type="text/JavaScript">
<!--
var imgObj;
function checkImg(theURL,winName){
// 对象是否已创建
if (typeof(imgObj) == "object"){
// 是否已取得了图像的高度和宽度
if ((imgObj.width != 0) && (imgObj.height != 0))
// 根据取得的图像高度和宽度设置弹出窗口的高度与宽度,并打开该窗口
// 其中的增量 20 和 30 是设置的窗口边框与图片间的间隔量
OpenFullSizeWindow(theURL,winName, ",width=" + (imgObj.width+20) + ",height=" + (imgObj.height+30));
else
// 因为通过 Image 对象动态装载图片,不可能立即得到图片的宽度和高度,所以每隔100毫秒重复调用检查
setTimeout("checkImg('" + theURL + "','" + winName + "')", 100)
}
}

function OpenFullSizeWindow(theURL,winName,features) {
var aNewWin, sBaseCmd;
// 弹出窗口外观参数
sBaseCmd = "toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,";
// 调用是否来自 checkImg 
if (features == null || features == ""){
// 创建图像对象
imgObj = new Image();
// 设置图像源
imgObj.src = theURL;
// 开始获取图像大小
checkImg(theURL, winName)
}
else{
// 打开窗口
aNewWin = window.open(theURL,winName, sBaseCmd + features);
// 聚焦窗口
aNewWin.focus();
}
}
//-->
</script>

使用时将上面的代码放在网页文档的<head></head>标记对中,然后在链接的点击事件中调用OpenFullSizeWindow函数,如<a href="fullsize.jpg" onClick="OpenFullSizeWindow(this.href,'','');return false"><img src="small.jpg"></a>即可。

以上代码在IE 5.x-6.0中测试通过。

Javascript 相关文章推荐
改进UCHOME的记录发布,增强可访问性用户体验
Jan 17 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
Jan 31 Javascript
详谈 Jquery Ajax异步处理Json数据.
Sep 09 Javascript
js自动生成的元素与页面原有元素发生堆叠的解决方法
Oct 24 Javascript
JavaScript中读取和保存文件实例
May 08 Javascript
ECMAScript 5中的属性描述符详解
Mar 02 Javascript
jQuery实现textarea自动增长宽高的方法
Dec 18 Javascript
localStorage的黑科技-js和css缓存机制
Feb 06 Javascript
详解如何从零开始搭建Express+Vue开发环境
Jul 17 Javascript
12 种使用Vue 的最佳做法
Mar 30 Javascript
JS实现简单打字测试
Jun 24 Javascript
vue3如何优雅的实现移动端登录注册模块
Mar 29 Vue.js
如何实现iframe(嵌入式帧)的自适应高度
Jul 26 #Javascript
CSS+JS构建的图片查看器
Jul 22 #Javascript
常用参考资料(手册)下载或者链接
Jul 22 #Javascript
JavaScript窗口功能指南之在窗口中书写内容
Jul 21 #Javascript
用于table内容排序
Jul 21 #Javascript
脚本收藏iframe
Jul 21 #Javascript
document.all还是document.getElementsByName?
Jul 21 #Javascript
You might like
php实现可以设置中奖概率的抽奖程序代码分享
2014/01/19 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
JS鼠标事件大全 推荐收藏
2011/11/01 Javascript
Android中的jQuery:AQuery简介
2014/05/06 Javascript
jQuery使用height()获取高度需要注意的地方
2014/12/13 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
react实现pure render时bind(this)隐患需注意!
2017/03/09 Javascript
详解nodejs express下使用redis管理session
2017/04/24 NodeJs
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
Nest.js环境变量配置与序列化详解
2021/02/21 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
跟老齐学Python之Import 模块
2014/10/13 Python
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
在Python的Django框架中编写错误提示页面
2015/07/22 Python
使用python3.5仿微软记事本notepad
2016/06/15 Python
详解Python中类的定义与使用
2017/04/11 Python
安装Python的教程-Windows
2017/07/22 Python
PyQt5每天必学之弹出消息框
2018/04/19 Python
python实现寻找最长回文子序列的方法
2018/06/02 Python
Python中__slots__属性介绍与基本使用方法
2018/09/05 Python
Python实现简单石头剪刀布游戏
2021/01/20 Python
Python 占位符的使用方法详解
2019/07/10 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
Cotton On香港网站:澳洲时装连锁品牌
2018/11/01 全球购物
创业计划书的写作技巧及要点
2014/01/31 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
2015年求职自荐信范文
2015/03/04 职场文书