[原创]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 相关文章推荐
再谈ie和firefox下的document.all属性
Oct 21 Javascript
jquery 图片 上一张 下一张 链接效果(续篇)
Apr 20 Javascript
JQUBAR1.1 jQuery 柱状图插件发布
Nov 28 Javascript
深入理解JavaScript作用域和作用域链
Oct 21 Javascript
JS自定义功能函数实现动态添加网址参数修改网址参数值
Aug 02 Javascript
js添加select下默认的option的value和text的方法
Oct 19 Javascript
纯JS代码实现隔行变色鼠标移入高亮
Nov 23 Javascript
Javascript面试经典套路reduce函数查重
Mar 23 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
Dec 28 Javascript
webpack vue项目开发环境局域网访问方法
Mar 20 Javascript
Node.js npm命令运行node.js脚本的方法
Oct 10 Javascript
Vue绑定用户接口实现代码示例
Nov 04 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变量存储的详解
2013/06/13 PHP
PHP使用array_multisort对多个数组或多维数组进行排序
2014/12/16 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
一个JQuery写的点击上下滚动的小例子
2011/08/27 Javascript
jquery鼠标停止移动事件
2013/12/21 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
深入理解Ajax的get和post请求
2016/06/02 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
Node.js通过身份证号验证年龄、出生日期与性别方法示例
2017/03/09 Javascript
nodejs搭建本地http服务器教程
2017/03/13 NodeJs
Angular4编程之表单响应功能示例
2017/12/13 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
解决removeEventListener 无法清除监听的问题
2020/10/30 Javascript
[03:26]《DAC最前线》之EG经理自述DOTA2经历
2015/02/02 DOTA
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
Python实现图片尺寸缩放脚本
2018/03/10 Python
python调用百度语音识别实现大音频文件语音识别功能
2018/08/30 Python
妙用itchat! python实现久坐提醒功能
2019/11/25 Python
Python 转移文件至云对象存储的方法
2021/02/07 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
你常见到的runtime exception
2016/09/05 面试题
安全生产责任书范本
2014/04/15 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
家长对孩子的寄语
2015/02/26 职场文书
工作自我评价范文
2015/03/05 职场文书
社区节水倡议书
2015/04/29 职场文书
太空授课观后感
2015/06/17 职场文书
党员干部学习心得体会
2016/01/23 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
销区经理年终述职报告模板
2019/11/28 职场文书
Python实现排序方法常见的四种
2021/07/15 Python