从 data-src 属性设置 img src
Set img src from data-src attribute
我正在尝试使用 jquery 从 data-src 属性为多个图像设置 img src 属性,但代码不起作用。 img src 不变。
这里有一个 link 来查看我的代码。
jQuery(document).ready(function($){
$('.container figure.images').each(function(index, element){
var thisImage = $(this);
var canvas = thisImage.find("canvas").get(0);
var ctx = canvas.getContext("2d");
ctx.rect(298, 0, 984, 329);
ctx.rect(0, 329, 1280, 514);
ctx.clip();
img = new Image();
img.onload = function () {
ctx.drawImage(this, 0, 0, img.width, img.height);
var imgNew = canvas.toDataURL("image/png");
thisImage.find("img").attr('src', imgNew);
};
img.src = thisImage.find("img").attr('data-src');
});
});
.container figure img {
width: 100%;
height: auto;
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<section class="platform">
<div class="container">
<figure class="images">
<canvas width="1280" height="843" style="display: none"></canvas>
<img src="#" data-src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png" alt="description" />
</figure>
<figure class="images">
<canvas width="1280" height="843" style="display: none"></canvas>
<img src="#" data-src="https://www.dropbox.com/s/bl5yz4itgbo1ggl/2.jpg" alt="description" />
</figure>
<figure class="images">
<canvas width="1280" height="843" style="display: none"></canvas>
<img src="#" data-src="https://www.dropbox.com/s/bl5yz4itgbo1ggl/2.jpg" alt="description" />
</figure>
</div>
</section>
谢谢大家,祝你今天愉快。
我发现似乎有两个问题:
Dropbox 正在重定向您的下载,因此您返回的数据不是图像,而是 Dropbox HTML 页面。
尽管如此,我还是无法让您的 canvas 绘图发挥作用(这可能是可能的,但它对我不起作用)。我能够重构它以插入一个新的 img 标签,其中的 src 集来自 data-src。如果您在 .images 元素上设置 data-src 然后没有默认的 canvas 或 img 标签,这可能是最有效的。如果你真的想要 width 和 height 属性,你也可以这样做。
$(document).ready(function() {
$('.container figure.images').each(function(i, e) {
var url = $('img', e).attr('data-src');
$(e).append($('<img>', { 'src': url }));
});
});
我还将您的一个 data-src 值更改为“https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png”,以查看 img 确实有效,只是不适用于 Dropbox 版本。
HTH
我正在尝试使用 jquery 从 data-src 属性为多个图像设置 img src 属性,但代码不起作用。 img src 不变。
这里有一个 link 来查看我的代码。
jQuery(document).ready(function($){
$('.container figure.images').each(function(index, element){
var thisImage = $(this);
var canvas = thisImage.find("canvas").get(0);
var ctx = canvas.getContext("2d");
ctx.rect(298, 0, 984, 329);
ctx.rect(0, 329, 1280, 514);
ctx.clip();
img = new Image();
img.onload = function () {
ctx.drawImage(this, 0, 0, img.width, img.height);
var imgNew = canvas.toDataURL("image/png");
thisImage.find("img").attr('src', imgNew);
};
img.src = thisImage.find("img").attr('data-src');
});
});
.container figure img {
width: 100%;
height: auto;
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<section class="platform">
<div class="container">
<figure class="images">
<canvas width="1280" height="843" style="display: none"></canvas>
<img src="#" data-src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png" alt="description" />
</figure>
<figure class="images">
<canvas width="1280" height="843" style="display: none"></canvas>
<img src="#" data-src="https://www.dropbox.com/s/bl5yz4itgbo1ggl/2.jpg" alt="description" />
</figure>
<figure class="images">
<canvas width="1280" height="843" style="display: none"></canvas>
<img src="#" data-src="https://www.dropbox.com/s/bl5yz4itgbo1ggl/2.jpg" alt="description" />
</figure>
</div>
</section>
谢谢大家,祝你今天愉快。
我发现似乎有两个问题:
Dropbox 正在重定向您的下载,因此您返回的数据不是图像,而是 Dropbox HTML 页面。
尽管如此,我还是无法让您的 canvas 绘图发挥作用(这可能是可能的,但它对我不起作用)。我能够重构它以插入一个新的 img 标签,其中的 src 集来自 data-src。如果您在 .images 元素上设置 data-src 然后没有默认的 canvas 或 img 标签,这可能是最有效的。如果你真的想要 width 和 height 属性,你也可以这样做。
$(document).ready(function() {
$('.container figure.images').each(function(i, e) {
var url = $('img', e).attr('data-src');
$(e).append($('<img>', { 'src': url }));
});
});
我还将您的一个 data-src 值更改为“https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png”,以查看 img 确实有效,只是不适用于 Dropbox 版本。
HTH