You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于JavaScript动态生成图片:无法添加宽高属性的SEO问题

问题:MVC 5动态生成图片缺失SEO关键的width/height属性

我在MVC 5项目中通过代码根据div宽度动态生成图片,代码能正常运行,但最终生成的img标签里没有对SEO至关重要的width和height属性,需要解决这个问题。

现有代码

HTML结构:

<div id="div1" class="col-xs-12 col-sm-12 col-md-6 col-lg-6 nopadding">
      <img id="img1" class="img-responsive"/>
</div>

JavaScript代码:

$("#div1").addClass("col-md-5 col-lg-5").removeClass("col-md-6 col-lg-6");
var div = document.getElementById("div1");
var jumpwidth = parseInt(div.offsetWidth);
var img = new Image();
img.src =  '@Url.Content("~/Content/images/JumpStart.webp")';
img.onload = function() {
    var imageElement = document.getElementById("img1");
    imageElement.src = img.src;
    img.setAttribute("width", jumpwidth);
    img.setAttribute("height", parseInt(jumpwidth / 1.5, 10));
    imageElement.maxWidth = jumpwidth;
    imageElement.maxHeight = parseInt(jumpwidth/ 1.5, 10);
    imageElement.alt = "JumpStart";
    imageElement.style.marginLeft = "auto";
    imageElement.style.marginRight = "auto";
};

当前生成的img标签:

<img id="img1" class="img-responsive" src="http://localhost:6875/Content/images/JumpStart.webp" alt="JumpStart" style="margin-left: auto; margin-right: auto;">

解决方案

问题出在你把width和height属性设置给了临时创建的img对象,而不是页面上实际显示的imageElement(也就是#img1)。只需要修改onload函数里的代码,把属性直接添加到imageElement上即可:

$("#div1").addClass("col-md-5 col-lg-5").removeClass("col-md-6 col-lg-6");
var div = document.getElementById("div1");
var jumpwidth = parseInt(div.offsetWidth);
var targetHeight = parseInt(jumpwidth / 1.5, 10);
var img = new Image();
img.src =  '@Url.Content("~/Content/images/JumpStart.webp")';
img.onload = function() {
    var imageElement = document.getElementById("img1");
    imageElement.src = img.src;
    // 直接给页面上的img元素设置width和height属性
    imageElement.setAttribute("width", jumpwidth);
    imageElement.setAttribute("height", targetHeight);
    imageElement.maxWidth = jumpwidth;
    imageElement.maxHeight = targetHeight;
    imageElement.alt = "JumpStart";
    imageElement.style.marginLeft = "auto";
    imageElement.style.marginRight = "auto";
};

修改后生成的img标签会包含width和height属性:

<img id="img1" class="img-responsive" src="http://localhost:6875/Content/images/JumpStart.webp" alt="JumpStart" width="XXX" height="XXX" style="margin-left: auto; margin-right: auto;">

另外,也可以用更简洁的DOM属性赋值写法:

// 替代setAttribute的写法
imageElement.width = jumpwidth;
imageElement.height = targetHeight;

这样就能确保img标签带上对SEO关键的width和height属性了。

内容的提问来源于stack exchange,提问作者hncl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 09:03:14