[原创]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 相关文章推荐
JavaScipt基本教程之JavaScript语言的基础
Jan 16 Javascript
javascript GUID生成器实现代码
Oct 31 Javascript
jQuery阻止冒泡和HTML默认操作
Nov 17 Javascript
jQuery学习笔记之Helloworld
Dec 22 Javascript
js charAt的使用示例
Feb 18 Javascript
jQuery插件实现静态HTML验证码校验
Nov 06 Javascript
jQuery常用知识点总结以及平时封装常用函数
Feb 23 Javascript
EasyUI学习之DataGird分页显示数据
Dec 29 Javascript
如何使用Bootstrap创建表单
Mar 29 Javascript
微信小程序 后台登录(非微信账号)实例详解
Mar 31 Javascript
Bootstrap Table使用整理(四)之工具栏
Jun 09 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
Nov 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 中关于ord($str)&amp;gt;0x80的详细说明
2012/09/23 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
PHP 实现链式操作
2021/03/09 PHP
google地图的路线实现代码
2009/08/20 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
JavaScript判断textarea值是否为空并给出相应提示
2014/09/04 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
2015/03/19 Javascript
js实现当前输入框高亮显示的方法
2015/08/19 Javascript
Bootstrap插件全集
2016/07/18 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
基于jQuery实现Tabs选项卡自定义插件
2016/11/21 Javascript
node.js 中间件express-session使用详解
2017/05/20 Javascript
谈谈对vue响应式数据更新的误解
2017/08/01 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
用JS实现一个简单的打砖块游戏
2019/12/11 Javascript
关于vue 项目中浏览器跨域的配置问题
2020/11/10 Javascript
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
初学python数组的处理代码
2011/01/04 Python
初步探究Python程序的执行原理
2015/04/11 Python
python创建和删除目录的方法
2015/04/29 Python
用Django写天气预报查询网站
2018/10/21 Python
Python os.rename() 重命名目录和文件的示例
2018/10/25 Python
Python字符串对象实现原理详解
2019/07/01 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
HTML5新特性之语义化标签
2017/10/31 HTML / CSS
使用Html5中的cavas画一面国旗
2019/09/25 HTML / CSS
哥伦比亚最大的网上商店:Linio哥伦比亚
2016/09/25 全球购物
诚实守信演讲稿
2014/09/01 职场文书
股东合作协议书
2014/09/12 职场文书
质量主管工作职责
2014/09/26 职场文书
分居协议书范本(律师见证版)
2014/11/26 职场文书
募捐感谢信
2015/01/22 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
关于 Python json中load和loads区别
2021/11/07 Python