[原创]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 相关文章推荐
使用jquery选择器如何获取父级元素、同级元素、子元素
May 14 Javascript
网页中表单按回车就自动提交的问题的解决方案
Nov 03 Javascript
jQuery+PHP实现动态数字展示特效
Mar 14 Javascript
JS DOM实现鼠标滑动图片效果
Sep 17 Javascript
jquery二级目录选中当前页的css样式
Dec 08 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
Jan 22 Javascript
页面间固定参数,通过cookie传值的实现方法
May 31 Javascript
利用node.js制作命令行工具方法教程(一)
Jun 22 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
Dec 28 Javascript
jQuery添加新内容的四个常用方法分析【append,prepend,after,before】
Mar 19 jQuery
js作用域和作用域链及预解析
Apr 11 Javascript
js实现简单抽奖功能
Nov 24 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 计算两个时间戳相隔的时间的函数(小时)
2009/12/18 PHP
php获取客户端电脑屏幕参数的方法
2015/01/09 PHP
Yii2中如何使用modal弹窗(基本使用)
2016/05/30 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
Kibo 用于处理键盘事件的Javascript工具库
2011/10/28 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
js实现同一页面多个运动效果的方法
2015/04/10 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
JavaScript switch语句使用方法简介
2019/12/30 Javascript
vue实现简单加法计算器
2020/10/22 Javascript
express异步函数异常捕获示例详解
2020/11/30 Javascript
[55:32]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第二场
2018/04/05 DOTA
[52:36]VGJ.S vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python调用staf自动化框架的方法
2018/12/26 Python
python dict 相同key 合并value的实例
2019/01/21 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
2020/10/12 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
pandas使用函数批量处理数据(map、apply、applymap)
2020/11/27 Python
python 基于opencv操作摄像头
2020/12/24 Python
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
手机配件第一品牌:ZAGG
2017/05/28 全球购物
Tripadvisor新西兰:阅读评论,比较价格和酒店预订
2018/02/10 全球购物
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
如何在C# winform中异步调用web services
2015/09/21 面试题
擅自离岗检讨书
2014/02/11 职场文书
学校招生宣传广告词
2014/03/19 职场文书
中学生演讲稿
2014/04/26 职场文书
2015教师见习期工作总结
2014/12/12 职场文书
英文道歉信
2015/01/20 职场文书
关于MybatisPlus配置双数据库驱动连接数据库问题
2022/01/22 Java/Android