发一个自己用JS写的实用看图工具实现代码

 因为某些网站把内容图片以每页显示一幅的形式呈现,而每页都有大量没用的垃圾信息(广告、新闻和无关图片),非常影响看图效率。所以写了这个,只要知道第一幅图片的URL,填在本网页里,设置一下起始和结束编号,就可以显示带有数字编号的图片了,同时还有一些常用到的贴心功能。当然,对于某些网站存放的无序图片就无能为力了。

  介绍完了,下面是代码内容,希望能对JS新手们有点帮助吧(请自行把下面代码里所有的“'”替换为单引号。我对这里这个格式实在没辙了):


代码如下:

<SCRIPT>
//CTRL+鼠标滚轮放大或缩小图片:
function imgzoom(o) {
    if(event.ctrlKey) {
        var zoom = parseInt(o.style.zoom, 10) || 100;
        zoom -= event.wheelDelta / 12;
        if(zoom > 0) {
            o.style.zoom = zoom + '%';
        }
        return false;
    } else {
        return true;
    }
}
//接收热键
document.onkeydown=mykey;
var IsShow=false;
function  mykey()
{
    var  key=window.event.keyCode;
//    alert(key);
    if (key==192){
        if (IsShow) showIt();
            else hideIt();
//        IsShow=!IsShow;
    }    //45=Insert键,16=Shift,17=Ctrl,18=Alt,192=`
    if (key==13 ) catchIt();//Enter,to display
    if (key==186)  document.getElementById('add0').checked=!document.getElementById('add0').checked;
}

function hideIt()
{    IsShow=true;
    //隐藏
//    document.getElementById('showHere').style.visibility='hidden';    //保留占用的显示面积
    document.getElementById('showHere').style.display='none';        //回收占用的显示面积
//    document.getElementById('imgUrlBackup').innerText=document.getElementById('thePath').value;
//    document.getElementById('thePath').value='';
}

function showIt()
{    IsShow=false;
    //显示
//    document.getElementById('showHere').style.visibility="visible";
    document.getElementById('showHere').style.display="";
//    document.getElementById('thePath').value=document.getElementById('imgUrlBackup').innerText;
}

function catchIt()
{
    ////document.write('<p><table>');
    showIt()
    var sn=Number(document.getElementById('startNum').value);
    var en=Number(document.getElementById('endNum').value);
    var str=document.getElementById('thePath').value;
    var IsAdd0=document.getElementById('add0').checked;
    var lastPos;
    var Discript='<center>按1旁边的“`”键可隐藏/显示图片区域。点击图片可在新窗口查看原图。CTRL+鼠标滚轮可放大或缩小图片。</center>';
    var showSth='<table>';
    var fn='';
    fn='';
    if (IsAdd0)
    {
        lastPos=str.lastIndexOf('#');
         str=str.replace(new RegExp('#','ig'),'0');
        for(var n=sn;n<=en;n++)
        {
            fn=str.substring(0,lastPos-String(n).length+1) + n + str.substring(lastPos+1);
            showSth=showSth+GetImgSrc(fn);
        }
    }
    else
    {
        for(var n=sn;n<=en;n++)
        {
            fn=str.replace('#',n);
            showSth=showSth+GetImgSrc(fn);
        }
    }
    showSth=showSth+'</table>';
//    alert(showSth);
    document.getElementById('showHere').innerHTML=Discript+showSth+Discript;
    //    document.refresh();
    IsShow=false;
}

function GetImgSrc(ImgUrl)
{    //让图片载入后自动调整显示尺寸以适应屏幕,并提取文件体积信息附加到提示信息上
    //在鼠标经过时,设置鼠标为手形状
    //在鼠标点击时,在新窗口打开图片
    //鼠标滚轮滚动时,触发缩放图片函数
    //设置图片的提示信息
    return ' <img onerror="javascript:this.style.display=\'none\';"  src="' + ImgUrl  + '" onload="if(this.width >screen.width*0.7) {this.resized=true; this.width=screen.width*0.7;DispImgInfo(this);}" onmouseover="if(this.resized) this.style.cursor='hand';" onclick="window.open(this.src);" onmousewheel="return imgzoom(this);" alt="URL:' + ImgUrl + ' 点击=在新窗口查看,CTRL+鼠标滚轮=缩放图片" >';
}

//把所有图片按thesize文本框指定比例进行缩放
function ImgZoom(Operation) {
    var ScaleTo=document.getElementById('thesize').value/100;
    if (Operation=="toBig") {ScaleTo=1+ScaleTo;}
    for(var i=0;i<document.images.length;i++)
    {    document.images[i].width=document.images[i].width*ScaleTo;
        //不用改变高度,会自动跟随长度变化而等比变化.
    }
}

//  宽:'+this.width+',高:'+this.height+','+getImgsize(this)+'

function DispImgInfo(img) {
    if (img.src!=null && img.src!="")
            img.alt=img.alt + " 宽:"+img.width+",高:"+img.height+",大小:"+getImgsize(img);
}

function discAllimages() {
    //getAllimages
    for (var i=0; i<document.images.length; i++)
    {    var img=document.images[i];
        if (img.src!=null && img.src!="")
            img.alt=img.alt + " 宽:"+img.width+",高:"+img.height+",大小:"+getImgsize(img);
    }
}

function getImgsize(x) {
    var picSize=x.fileSize;
    if (picSize>1000) picSize=Math.round(picSize/1024*100)/100+'KB';
    else if (picSize > 0) picSize=picSize+'字节';
    else picSize='未知';
    return picSize;
}
</SCRIPT>

作者:ZhaoLiang -- 碧海情天、淹没天空的海  邮箱:thedoc01@163.com   制作时间:2006年8月
<BR>功能:批量显示带数字编号的本地或网络图片。如 C:A##.gif 或 file:///C:/A##.gif 或 http://www.cctv.com/A3#.jpg
<BR>说明:如图片名称是A02而非A2时,可用##指定编号的固定长度并选择“固位补零”,则不足位的会自动用0补齐)
<BR>热键:`(~)键=显示开/关。;键=开关固位补零。图片上CTRL+鼠标滚轮=缩放图片。点击图片=在新窗口打开。HOME=篇幅较长时可返回开头。
<HR>
路径:<INPUT id='thePath' style="apos: " type='text'></INPUT>
起始编号:<INPUT id='startNum' style="apos: " type='text'></INPUT>
结束编号:<INPUT id='endNum' style="apos: " type='text'></INPUT><BR>
<INPUT id='add0' type='checkbox'></INPUT>固位补零
 <INPUT onclick=javascript:catchIt() type='button' value='显示之'></INPUT>
<!--  <input type='button' id='see' onclick="javascript:showIt()" value='再显示'></input>
-->
<INPUT onclick=javascript:ImgZoom('toSmall') type='button' value='缩小'></INPUT>
<INPUT onclick=javascript:ImgZoom('toBig') type='button' value='放大'></INPUT>
缩放比例(百分之):<INPUT id='thesize' style="apos: " type='text' value=50>(回车即显示图片)
<!--  <input type='button' onclick="javascript:discAllimages()" value="显示图片信息">
-->
<HR>
<DIV id='showHere'></DIV>
<DIV id='imgUrlBackup' style="DISPLAY: none; apos: "></DIV>

<SCRIPT>
    document.getElementById('thePath').focus();
</SCRIPT>
<!--
作者:ZhaoLiang -- 碧海情天、淹没天空的海  邮箱:thedoc01@163.com
看显示区代码javascript:alert(document.getElementById('showHere').innerHTML);
-->

平时也不注意整理,所以这个文件改过几个不同版本,发完了我才想起,曾经把hideIt()和showit()合并成一个函数(根据参数进行处理就行了),还有其它一些细节。因为对这里的编辑还不太熟,就不再改了,大家有兴趣自己试试吧。如果有什么建议能提供的话就更好了。

(更新:修改了一下,对于不存在的图片,自动隐藏,不占据显示空间——通过img的onerror事件进行处理。 
另外要说的,这里现在这个代码编辑器,很容易导致编辑后的内容大乱套。我花了很长时间来改正错误的替换代码,感觉比我写这个脚本工具都累。而且,里面SPAN的生成,完全没有优化,不必要的重复数量简直惊人,希望OpenSoft开发组尽快完善。)

(0)

相关推荐

  • 发一个自己用JS写的实用看图工具实现代码

    因为某些网站把内容图片以每页显示一幅的形式呈现,而每页都有大量没用的垃圾信息(广告.新闻和无关图片),非常影响看图效率.所以写了这个,只要知道第一幅图片的URL,填在本网页里,设置一下起始和结束编号,就可以显示带有数字编号的图片了,同时还有一些常用到的贴心功能.当然,对于某些网站存放的无序图片就无能为力了. 介绍完了,下面是代码内容,希望能对JS新手们有点帮助吧(请自行把下面代码里所有的"&apos;"替换为单引号.我对这里这个格式实在没辙了): 复制代码 代码如下: <

  • js原型链原理看图说明

    当初ECMAscript的发明者为了简化这门语言,同时又保持继承的属性,于是就设计了这个链表.. 在数据结构中学过链表不,链表中有一个位置相当于指针,指向下一个结构体. 于是乎__proto__也一样,每当你去定义一个prototype的时候,相当于把该实例的__proto__指向一个结构体,那么这个被指向结构体就称为该实例的原型. 文字说起来有点儿绕,看图说话 复制代码 代码如下: var foo = { x: 10, y: 20 }; 当我不指定__proto__的时候,foo也会预留一个这

  • 发一个分页的js

    无标题文档 this.cntR)?this.cntR:this.curP*this.cntPP;/*结束纪录*/ this.result['pagedata']=[]; if(this.showType){ this.perSide = Math.floor(this.cntPS/2); this.startP = (this.curP > this.perSide)?(this.curP - this.perSide):1; this.endP = (this.startP + this.cn

  • 原生JS实现手动轮播图效果实例代码

    手动轮播图,为轮播图中的一种,轮播图主要有无缝轮播,手动轮播,延迟轮播,切换轮播等等... 轮播图主要用于展现图片,新出商品,词条,又能美观网页.給网页中增加动态效果. 手动轮播,是小编认为最简单的一种轮播方式,既能左右翻页,还能通过悬浮按钮,快速预览图片,所以今天就给大家写一个原生js手动轮播图. 一,利用JavaScript制作手动轮播图,首先排版. 引入默认样式表(可以手写): <link rel="stylesheet" href="css/Default st

  • 用js写的一个路由(简单实例)

    前几天在网上看了一个大牛用js写了一个路由的,有一句代码一直不知道怎么回事,后来就自己写了一个,写的比较的粗糙,我觉得把面向对象的思想都搞得乱七八糟的,不过功能实现了. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js实现路由</title> </head> <body> &l

  • 原生js实现简单轮播图

    本文实例为大家分享了js实现简单轮播图的具体代码,供大家参考,具体内容如下 一.写入网页基本结构 body: 网页的最外部设置一个id为wrap的容器,取代body,这样方便我们做一些初始化 css: 初始化: 包括外边距margin.内边距padding.链接a.图片img.输入框input.列表ul.li.网页html.body一系列初始化 css设置: 根据图片数与图片宽度设置轮播图宽度 二.设置js逻辑 需要完成的功能有: 1.鼠标移入轮播图逐渐出现左右浮动块 2.点击浮动块切换图片 3

  • JS实现旋转木马轮播图

    本文实例为大家分享了JS实现旋转木马轮播图的具体代码,供大家参考,具体内容如下 知识点 1.旋转木马思想: 1).固定五种图片的位置信息jsonArr进行布局 2).点击<或者>会对jsonArr进行重新排序,重新排序后对界面重新进行布局 2.数据驱动界面,数据的改变会影响界面 3.数组的四种操作 ① push:push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度. ② pop:pop() 方法用于删除并返回数组的最后一个元素. ③ shift:shift() 方法用于把数组的第

  • js实现左右轮播图

    本文实例为大家分享了js实现左右轮播图的具体代码,供大家参考,具体内容如下 我的轮播图功能有:自动播放.点击焦点切换和点击左右按钮切换 效果图: 自动轮播 点击焦点切换 点击左右按钮切换 注意:本文用带背景颜色的li标签指代图片,有需要的话可以将图片插入li标签内 思路: 基础布局和css样式 (1) 给盛放要轮播的图片的盒子绝对定位 js中的代码 (2) 复制第一张图片放在盒子最后,复制最后一张图片放在盒子最前,以保证轮播图左右滑动效果(否则看起来会有一点卡顿) (3)设置盒子位置,通过移动这

  • 原生js实现无缝轮播图

    本文实例为大家分享了js实现无缝轮播图的具体代码,供大家参考,具体内容如下 先上效果图 原理图 如图可见,是页面按顺序依次显示5张图片,包裹这五张图片的外层的盒子,我们叫ul,通过向左或右移动不同距离,实现在视图中显示的不同的图片,实现轮播,而同时下面的分页小球需要根据当前显示的内容进行点亮: 而无缝轮播图需要在第五张图片后面再加上第一张图片,这样通过右侧箭头,向右切换,当页面切换到第六张时,也就是最后一张图片,此时需要将ul的位置设置为第一张图的位置,然后从第一张图片滑动到第二张,形成一个无缝

  • 用js实现简单轮播图

    本文实例为大家分享了js实现简单轮播图的具体代码,供大家参考,具体内容如下 1.实现功能: 2.实现思路: (1)鼠标放到图片上,显示箭头,用display来做. (2)动态生成小圆圈. (3)小圆圈的排他思想 (4)点击小圆圈滚动图片 设置自定义属性:this.setAttribute(name, value); 获取自定义属性:this.getAttribute(name,value); (5)点击右按钮,滚动一张图片(学习无缝滚动原理) (6)克隆第一张图片放到图片最后面 li.clone

随机推荐