Javascript 如何在新窗口中从srcset打开正确的img?

Javascript 如何在新窗口中从srcset打开正确的img?,javascript,jquery,html,srcset,flickity,Javascript,Jquery,Html,Srcset,Flickity,我试图在一个新窗口中打开一个图像,并根据srcset加载正确的图像,以便根据分辨率打开正确的图像大小 html: 以上内容不会根据分辨率打开不同的图像,但这https://farm4.staticflickr.com/3059/2835191823_e3636abb34_m.jpg 我相信是因为$str[0]但我尝试不插入索引[0],这会将我带到一个未找到的图像 示例:执行以下两个步骤时: var $str = img_to_load.split(' '); var $retina = $str

我试图在一个新窗口中打开一个图像,并根据srcset加载正确的图像,以便根据分辨率打开正确的图像大小

html:

以上内容不会根据分辨率打开不同的图像,但这
https://farm4.staticflickr.com/3059/2835191823_e3636abb34_m.jpg

我相信是因为
$str[0]但我尝试不插入索引[0],这会将我带到一个未找到的图像


示例:

执行以下两个步骤时:

var $str = img_to_load.split(' ');
var $retina = $str[0];
您将始终以
https://farm4.staticflickr.com/3059/2835191823_e3636abb34_m.jpg
基于
数据集中的字符串。这是因为在第一步中,您通过按空格分割字符串来创建数组,在第二步中,您访问数组中的第一个元素。因此,
$str[0]
https://farm4.staticflickr.com/3059/2835191823_e3636abb34_m.jpg
$str[1]
240w,
等等

要获得该字符串所需的部分,您必须执行一些复杂的字符串操作,因此我建议您使用不同的方法。而不是

data-srcset="https://farm4.staticflickr.com/3059/2835191823_e3636abb34_m.jpg 240w, https://farm4.staticflickr.com/3059/2835191823_e3636abb34_n.jpg 320w, https://farm4.staticflickr.com/3059/2835191823_e3636abb34.jpg 500w, https://farm4.staticflickr.com/3059/2835191823_e3636abb34_z.jpg 640w, https://farm4.staticflickr.com/3059/2835191823_e3636abb34_b.jpg 1920w"
为什么不把它分成如下几个部分:

data-srcset-240w="https://farm4.staticflickr.com/3059/2835191823_e3636abb34_m.jpg"
data-srcset-320w="https://farm4.staticflickr.com/3059/2835191823_e3636abb34_n.jpg"
等等。完成后,您可以像这样访问所需的部件,例如,如果您需要240w图像:

var img_to_load = $(this).find('img').attr('data-srcset-240w');

当然,现在还需要定义一些规则,以查看在何种情况下加载哪个图像。例如,要确定屏幕分辨率,您可以使用类似的方法,然后对照这些值检查以获得正确的图像。

执行以下两个步骤时:

var $str = img_to_load.split(' ');
var $retina = $str[0];
您将始终以
https://farm4.staticflickr.com/3059/2835191823_e3636abb34_m.jpg
基于
数据集中的字符串。这是因为在第一步中,您通过按空格分割字符串来创建数组,在第二步中,您访问数组中的第一个元素。因此,
$str[0]
https://farm4.staticflickr.com/3059/2835191823_e3636abb34_m.jpg
$str[1]
240w,
等等

要获得该字符串所需的部分,您必须执行一些复杂的字符串操作,因此我建议您使用不同的方法。而不是

data-srcset="https://farm4.staticflickr.com/3059/2835191823_e3636abb34_m.jpg 240w, https://farm4.staticflickr.com/3059/2835191823_e3636abb34_n.jpg 320w, https://farm4.staticflickr.com/3059/2835191823_e3636abb34.jpg 500w, https://farm4.staticflickr.com/3059/2835191823_e3636abb34_z.jpg 640w, https://farm4.staticflickr.com/3059/2835191823_e3636abb34_b.jpg 1920w"
为什么不把它分成如下几个部分:

data-srcset-240w="https://farm4.staticflickr.com/3059/2835191823_e3636abb34_m.jpg"
data-srcset-320w="https://farm4.staticflickr.com/3059/2835191823_e3636abb34_n.jpg"
等等。完成后,您可以像这样访问所需的部件,例如,如果您需要240w图像:

var img_to_load = $(this).find('img').attr('data-srcset-240w');
当然,现在还需要定义一些规则,以查看在何种情况下加载哪个图像。例如,要确定屏幕分辨率,您可以使用类似的方法,然后对照这些值检查以提供正确的图像。

解决方案是使用

解决办法是使用


类似于那个注释(
$(“img[data-srcset]”)和我的问题有什么关系?
$(“.gallery cell image”)。点击(function(){console.log($)(this.attr($);var img_to_load=$(this.attr('data-srcset');console.log(img_to_to_load);var$str=img_to_to_load.split(“”);var$retina=$str[0];imgWindow=window.open(img_to_load,'imgWindow');}右选择器执行以下操作:类似于注释
$(“img[data srcset]”)的内容
,这与我的问题有什么关系?
$(“.gallery cell image”)。单击(function(){console.log($(this.attr('alt');var img_to_load=$(this.attr('data-srcset');console.log(img_to_load);var$str=img_to_to_load.split(“”);var$retina=$str[0];imgWindow=window.open(img_to_load,'imgWindow');});
right selector do th thing:有趣,我不知道currentSrc…看起来很有用。有趣,我不知道currentSrc…看起来很有用。Safari和friends有解决方案吗?@nathan Image元素和Media元素的可用性不同:(不幸)@nathan ehm当时不确定,是一个老项目,不知道它在safari上是否有效,根据你说的,然后我没有测试它,那么safari和friends有解决方案吗?@nathan Image element和Media element的可用性不同:(不幸)@nathan ehm当时不确定,这是一个老项目,不知道它在safari上是否有效,根据你说的,我当时没有测试它