[原创]js与自动伸缩图片 自动缩小图片的多浏览器兼容的方法总结


Posted in Javascript onMarch 12, 2007

最近做一个图片的自动缩小效果,发现一直用的js,竟然在firefox下无法正常啊,导致页面变形.所以自己写了个兼容性一般的代码,大家可以来讨论下
原来我用的是从pjblog上的

//查找网页内宽度太大的图片进行缩放以及PNG纠正 
 function ReImgSize(){ 
  for (i=0;i<document.images.length;i++) 
   { 
   if (document.all){ 
    if (document.images[i].width>550) 
     { 
       document.images[i].width="550"  //没有高,明显会让图片变形
       try{ 
           document.images[i].outerHTML='<a href="'+document.images[i].src+'" target="_blank" title="在新窗口打开图片">'+document.images[i].outerHTML+'</a>' 
           }catch(e){} 
       } 
   } 
  else{ 
    if (document.images[i].width>400) { 
//宽和高都没有,更是让firefox下图片撑大图片
      document.images[i].title="在新窗口打开图片" 
      document.images[i].style.cursor="pointer" 
      document.images[i].onclick=function(e){window.open(this.src)} 
    } 
  } 
  } 
 }

非常好用的代码可不足的地方就是firefox下大图会变形,而且无法控制区域的图片,如果想要的大图,也被变成小图了
我自己写了个,
function $(objectId) {  
     if(document.getElementById && document.getElementById(objectId)) {  
    // W3C DOM  
       return document.getElementById(objectId);  
     }   
     else if (document.all && document.all(objectId)) {  
    // MSIE 4 DOM  
       return document.all(objectId);  
     }   
     else if (document.layers && document.layers[objectId]) {  
    // NN 4 DOM.. note: this won't find nested layers  
       return document.layers[objectId];  
     }   
     else {  
       return false;  
    }  
}
function dxy_ReImgSize(){ 
var box=$("dxy_content"); 
var imgall=box.getElementsByTagName("img") 
  for (i=0;i<imgall.length;i++) 
   { 
    if (imgall[i].width>500) 
     { 
    var oWidth=imgall[i].width; 
    var oHeight=imgall[i].height; 
    imgall[i].width="500"; 
    imgall[i].height=oHeight*500/oWidth; 
       } 
    } 
}

可又发现,如果低浏览器,不支持getElementsByTagName,就没的玩了,好处是可以控制区域.
最后没办法了,就先弄个,暂时的解决办法
function ReImgSize(){ 
  for (i=0;i<document.images.length;i++) 
   { 
   if (document.all){ 
    if (document.images[i].width>500) 
     { 
       var oWidth=document.images[i].width; 
       var oHeight=document.images[i].height; 
       document.images[i].width="500"; 
       document.images[i].height=oHeight*500/oWidth; 
       document.images[i].outerHTML='<a href="'+document.images[i].src+'" target="_blank" title="在新窗口打开图片">'+document.images[i].outerHTML+'</a>' 
       } 
   } 
  else{ 
    if (document.images[i].width>500) { 
       var oWidth=document.images[i].width; 
       var oHeight=document.images[i].height; 
       document.images[i].width="500"; 
       document.images[i].height=oHeight*500/oWidth; 
      document.images[i].title="在新窗口打开图片"; 
      document.images[i].style.cursor="pointer" 
      document.images[i].onclick=function(e){window.open(this.src)} 
    } 
  } 
  } 
 }

注意我增加了
var oWidth=document.images[i].width;  
       var oHeight=document.images[i].height;  
       document.images[i].width="500";  
       document.images[i].height=oHeight*500/oWidth; 

如果大家发现了什么更好的方法,贴出来啊
3water.com 三水点靠木 原创,转载请写明出处
Javascript 相关文章推荐
Js中setTimeout()和setInterval() 何时被调用执行的用法
Apr 12 Javascript
高效率JavaScript编写技巧整理
Aug 23 Javascript
node.js正则表达式获取网页中所有链接的代码实例
Jun 03 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
Oct 21 Javascript
7个jQuery最佳实践
Jan 12 Javascript
javaScript实现复选框全选反选事件详解
Nov 20 Javascript
Validform验证时可以为空否则按照指定格式验证
Oct 20 Javascript
vue2 全局变量的设置方法
Mar 09 Javascript
解决vue.js this.$router.push无效的问题
Sep 03 Javascript
JavaScript实现身份证验证代码实例
Aug 26 Javascript
vue 监听 Treeselect 选择项的改变操作
Aug 31 Javascript
在项目vue中使用echarts的操作步骤
Sep 07 Javascript
网页中实现浏览器的最大,最小化和关闭按钮
Mar 12 #Javascript
如何在Web页面上直接打开、编辑、创建Office文档
Mar 12 #Javascript
(function(){})()的用法与优点
Mar 11 #Javascript
可以文本显示的公告栏的js代码
Mar 11 #Javascript
简单三步,搞掂内存泄漏
Mar 10 #Javascript
如何简单地用YUI做JavaScript动画
Mar 10 #Javascript
可缩放Reloaded-一个针对可缩放元素的复用组件
Mar 10 #Javascript
You might like
php实现的简单数据库操作Model类
2016/11/16 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
php 中phar包的使用教程详解
2018/10/26 PHP
论坛特效代码收集(落伍转发-不错)
2006/12/02 Javascript
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
2009/06/02 Javascript
Javascript改变CSS样式(局部和全局)
2013/12/18 Javascript
jQuery拖拽 &amp; 弹出层 介绍与示例
2013/12/27 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
JavaScript字符串常用类使用方法汇总
2015/04/14 Javascript
使用console进行性能测试
2015/04/27 Javascript
跟我学习javascript的定时器
2015/11/19 Javascript
canvas快速绘制圆形、三角形、矩形、多边形方法介绍
2016/12/29 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
vuejs事件中心管理组件间的通信详解
2017/08/09 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
JavaScript实现音乐自动切换和轮播
2017/11/05 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
微信小程序动态添加view组件的实例代码
2019/05/23 Javascript
[01:51]开启你的城市传奇 完美世界城市挑战赛开始报名
2018/10/09 DOTA
Python压缩解压缩zip文件及破解zip文件密码的方法
2015/11/04 Python
详解Python函数作用域的LEGB顺序
2016/05/14 Python
python实现简单聊天应用 python群聊和点对点均实现
2017/09/14 Python
python 处理数字,把大于上限的数字置零实现方法
2019/01/28 Python
PyQt5显示GIF图片的方法
2019/06/17 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
个人函授自我鉴定
2014/03/25 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
军事理论课感想
2015/08/11 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
学术会议开幕词
2016/03/03 职场文书
vue前端工程的搭建
2021/03/31 Vue.js
Python学习之os包使用教程详解
2022/03/21 Python