javascript - 具有图片元素最大尺寸的图片的 url

标签 javascript html

在图片元素中,例如这个:

<picture class="l-display-block"> <source srcset="https://cache.marriott.com/marriottassets/marriott/NYCXR/nycxr-bar-8322-hor-feat.jpg?downsize=1440px:*, https://cache.marriott.com/marriottassets/marriott/NYCXR/nycxr-bar-8322-hor-feat.jpg?download=2880px:* 2x" media="(min-width: 1025px)"> <source srcset="https://cache.marriott.com/marriottassets/marriott/NYCXR/nycxr-bar-8322-hor-feat.jpg?downsize=1024px:*, https://cache.marriott.com/marriottassets/marriott/NYCXR/nycxr-bar-8322-hor-feat.jpg?downsize=2048px:* 2x" media="(min-width: 769px)"> <source srcset="https://cache.marriott.com/marriottassets/marriott/NYCXR/nycxr-bar-8322-hor-feat.jpg?downsize=768px:*, https://cache.marriott.com/marriottassets/marriott/NYCXR/nycxr-bar-8322-hor-feat.jpg?downsize=1536px:* 2x" media="(min-width: 600px)"> <source srcset="https://cache.marriott.com/marriottassets/marriott/NYCXR/nycxr-bar-8322-hor-feat.jpg?interpolation=progressive-bilinear&amp;downsize=599px:*, https://cache.marriott.com/marriottassets/marriott/NYCXR/nycxr-bar-8322-hor-feat.jpg?downsize=1198px:* 2x"> <img src="https://cache.marriott.com/marriottassets/marriott/NYCXR/nycxr-bar-8322-hor-feat.jpg?downsize=1024px:*" alt="King Cole Bar" class="l-display-block" itemprop="url"> </picture>

如何在JavaScript中获取图片元素中尺寸最大的图片的url

我试过:

var divs = document.querySelectorAll("source");

  for (m = 0; m < divs.length; m++) {
      url = img.getAttribute("data-srcset-large")||img.getAttribute("data-srcset")||img.getAttribute("srcset");
      if (url!=null) url= url.replace(/\s+[0-9]+(\.[0-9]+)?[wx]/g, "").split(/,/)[0];
    }

但它只得到第一个链接而不是最大尺寸的图像

最佳答案

我写了这个函数来完成这项工作..

function get_filesize(url, callback) {
  var xhr = new XMLHttpRequest();
  xhr.open("HEAD", url, false); // Notice "HEAD" instead of "GET",
                               //  to get only the header
  xhr.onreadystatechange = function() {
      if (this.readyState == this.DONE) {
          callback(parseInt(xhr.getResponseHeader("Content-Length")));
      }
  };
  xhr.send();
}



function LargestDimURLF(img){

  var Objs = [];
  var sourceElms = img.getElementsByTagName("SOURCE");

  for(k=0;k<sourceElms.length;k++){
    var sourceElm = sourceElms[k];
    var urls = sourceElm.getAttribute("srcset");

    if (urls==null) {
       for(s=0;s<sourceElm.attributes.length;s++){
        var att = sourceElm.attributes[s];
        if (att.nodeName.indexOf("data-srcset")!=-1){
          urls = att.value;
        }
       }
      
      }
    if (urls!=null) {
    
    urls= urls.replace(/\s+[0-9]+(\.[0-9]+)?[wx]/g, "").split(/,/);
      for(j=0;j<urls.length;j++){
        var url = urls[j];
        get_filesize(url, function(imgSize) {
          
          var Obj={"url":url,"size":imgSize}
          Objs.push(Obj);
        

        });
        


      }


    }
    
  }

      Objs.sort(function(a, b) {
          return b.size - a.size;
          
      });
      return Objs[0].url||"";
  



}

var url = LargestDimURLF(document.getElementByID("myPicture"));

关于javascript - 具有图片元素最大尺寸的图片的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54640200/

相关文章:

javascript - 如何将表单输入值传递给 JavaScript 函数

javascript - 如何使用 jquery 更改 css 属性

javascript - 有没有办法为 createElement 对象分配唯一 ID?

php - 如何使用多种表单提交唯一数据 PHP/MySQL

html - 缩放 SVG 形状以适应内容,其中内容包括 foreignObject

javascript - CoffeeScript:抑制 "ReferenceError"

html - 在 CSS 中,如何使表格展开以填充容器 div?

php - 如果定义了 GET 参数,则自动规范标记

javascript - 关于 Polymer,如何将一个 Web 组件的 'speak' 获取到另一个 Web 组件?

javascript - Jquery on click 函数不适用于 IE 8 中的 img