解析内容中的所有链接

时间:2012-11-05 23:47:25

标签: jquery asp.net html anchor

我需要解析整个内容并查找链接,如果链接具有pdf,doc,xls,ppt等扩展名,则在链接旁边添加filetype和filesize。

我找到了使用getResponseHeader("Content-Length")在Stack Overflow中使用jQuery获取文件大小的示例,但是这个文件总是为每个链接返回相同的文件大小。 有人为此提供样品吗?任何帮助都是高度评价的。

我当前的代码(我还没有检查扩展名)

<script type="text/javascript">
    $(document).ready(
        function () {
            $('a').each(function (index, obj) {                    
                var eleHref = $(obj).attr('href');
                var extension = eleHref.substr((eleHref.lastIndexOf('.') + 1)).toUpperCase();
                var request;
                request = $.ajax({ type: "HEAD", url: $(eleHref).val(), success:
                function () {
                    $(obj).append(" (" + extension + ", " + parseFloat(request.getResponseHeader("Content-Length") / 1024).toFixed(2) + 'KB)');
                }
                });
            })             
        });            
</script>

1 个答案:

答案 0 :(得分:2)

假设您的图片/文档位于同一个域中,这应该可以使用。

$('a').each(function() {

  var $this = $(this)
    , href = $this.attr('href')
    , ext = /(jpg|png|gif|doc|ppt|xls)$/i.exec( href )
    , req;

  if ( ext.length ) {
    req = $.ajax({
      type: 'HEAD',
      url: href,
      success: function() {
        var size = +req.getResponseHeader('Content-Length') / 1024 + 'KB';
        $this.append('<span>Extension: '+ ext +'</span>')
             .append('<span>Size: '+ size +'</span>');
      }
    });
  }

});

修改:如果您愿意,可以将扩展程序映射到对象以提取更多信息:

var extensions = {
  ppt: 'Microsoft PowerPoint',
  doc: 'Microsoft Word',
  pdf: 'Adobe Portable Document Format',
  ...
};

然后:

...
$this.append('<span>Extension: '+ extensions[ ext ] +'</span>')
...