用JavaScript做了一个小工具

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>网页抓图 by freshriver</TITLE>
</HEAD>
<BODY>
网址:
<input type=text id=rurl size=90 value="http://www.phpchina.com/bbs/viewthread.php?tid=53145"><input id=btnget type=button value="获取图片" onclick="getData()"><br>
<table width=100%>
<tr><td width=335>
<div id=imgBrowser style="width:330;height:545;overflow:auto"></div>
</td><td id=td><div id=divImg style="overflow:auto"><img id=imgShow></div>
</td></tr>
</table>
</BODY>
<script>

divImg.style.height 
= td.clientHeight;
divImg.style.width 
= td.clientWidth;

var REQ = null;

function request(url, onComplete)
{
    
try {
        REQ 
= new XMLHttpRequest();
    } 
catch (trymicrosoft) {
        
try {
            REQ 
= new ActiveXObject("Msxml2.XMLHTTP");
        } 
catch (othermicrosoft) {
            
try {
                REQ 
= new ActiveXObject("Microsoft.XMLHTTP");
            } 
catch (failed) {
            }  
        }
    }
    REQ.open(
"GET", url, true);
    REQ.onreadystatechange 
= onComplete;
    REQ.send(
null);
    
return REQ;
}

function onComplete(rsp)
{
    
if (REQ)
        
if (REQ.readyState == 4)
        {
            
var str = REQ.responseText;
            RegExpTest(str);
            btnget.disabled 
= false;    
        }
}
var baseUrl = "";
var hostUrl = '';
var FILEXTS = [".html"".jsp"".htm"".asp"".php"".aspx"];
function isFile(url)
{
    url 
= url.toLowerCase();
    
var ret = '';
    
for (var n = 0; n < FILEXTS.length; n ++)
    {
        
//alert(FILEXTS[n] + '\r' + url + '\r' + url.indexOf(FILEXTS[n]));
        //alert(url.length - FILEXTS[n].length);
        if (url.indexOf(FILEXTS[n]) != -1//url.length - FILEXTS[n].length - 1)
        {
            ret 
= FILEXTS[n];
            
break;
        }
    }
    
return ret;
}
//function
function reUrl(url)
{
    
if (baseUrl == "")
    {
        baseUrl 
= rurl.value;
        
var idx = baseUrl.indexOf('?');
        
if (idx != -1)
            baseUrl 
= baseUrl.substring(0, idx);
        
//alert(baseUrl);
        for (var n = 8; n < baseUrl.length; n ++)
        {
            
if (baseUrl.substring(n, n + 1== '/')
            {
                hostUrl 
= baseUrl.substring(0, n) + '/';
                
break;
            }
        }    
        
        
if (baseUrl.substring(baseUrl.length - 1, baseUrl.length) != '/')
        {
            
var ext = isFile(baseUrl);
                
//alert(ext);
            if (ext != '')
            {
                
//alert(baseUrl);
                for (var n = baseUrl.length - 1; n >= 0; n --)
                {
                    
if (baseUrl.substring(n, n + 1== '/')
                    {
                        baseUrl 
= baseUrl.substring(0, n) + '/';
                        
//alert(baseUrl);
                        break;
                    }
                }
        
            }
            
else
                baseUrl 
+= '/';
        }
    }

    
if (url.substring(04).toLowerCase() != 'http')
    {
        
//if (url.substring(0, 1) == '/')
        //    return hostUrl + url;
        //else
            return baseUrl + url;
    }
    
else
        
return url;
}

var imgCount = 0;
function addImg(url, orsrc)
{
    
var img = document.createElement('img');
    img.setAttribute(
'src', url);
    img.style.width 
= 100;
    img.style.height 
= 100;
    img.style.cursor 
= 'hand';
    img.errored 
= false;
    img.title 
= url;
    img.style.border 
= '2 solid white';
    img.onclick 
= function() { imgShow.setAttribute('src'this.src);};
    img.onmouseenter 
= function() {   this.style.border = '2 solid red'};
    img.onerror 
= function() {
        
if (! img.errored) {
            
//alert(img.src);
            //alert(hostUrl + orsrc) ;
            img.src = hostUrl + orsrc;
            img.title 
= img.src;
            img.errored 
= true;
            
//img.detachEvent('onerror', img.onerror);
        }
    };

    img.onmouseleave 
= function() { this.style.border = '2 solid white'};
    imgBrowser.appendChild(img);
    imgCount 
++;
    
if (imgCount % 3 == 0)
        imgBrowser.appendChild(document.createElement(
'br'));
}
function RegExpTest(src)
{
    
var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())
    
if (ver >= 5.5){ // 测试 JScript 的版本。
        var arr;
        imgCount 
= 0;
        baseUrl 
= '';
        
var re = /[http:////]*[\w+.]*[//\w+//]*[/\w+\?\s\=\d\-\(\)]+.gif/g; // 创建正则表达式模式。
        while ((arr = re.exec(src)) != null)
            addImg(reUrl(String(arr)), String(arr));
        re 
= /[http:////]*[\w+.]*[//\w+//]*[/\w+\?\s\=\d\-\(\)]+.jpg/g; // 创建正则表达式模式。
        while ((arr = re.exec(src)) != null)
            addImg(reUrl(String(arr)), String(arr));
        re 
= /[http:////]*[\w+.]*[//\w+//]*[/\w+\?\s\=\d\-\(\)]+.jpeg/g; // 创建正则表达式模式。
        while ((arr = re.exec(src)) != null)
            addImg(reUrl(String(arr)), String(arr));
        re 
= /[http:////]*[\w+.]*[//\w+//]*[/\w+\?\s\=\d\-\(\)]+.png/g; // 创建正则表达式模式。
        while ((arr = re.exec(src)) != null)
            addImg(reUrl(String(arr)), String(arr));
    }
    
else{
        alert(
"请使用 JScript 的更新版本");
    }
}

function getData()
{
    btnget.disabled 
= true;
    
var url = rurl.value;
    
    
var response = request(url, onComplete);
}
</script>
</HTML>

功能:根据指定网址,只浏览其图片资源,效果图如下:

方便那些从网上下载图片的朋友们,特别是有些图片以背景方式用在页面上时比较麻烦一点,不过有了这个工具就简单多了,复制下面的代码到记事本,然后另存为.html文件,用浏览器打开就可以使用了,代码如下:
 

posted on 2008-08-11 10:47  dotjava  阅读(217)  评论(0编辑  收藏  举报