javascript - 如何在仍在加载时更改原始 HTML

标签 javascript html dom

我需要使用一些由 JS 计算的数据(例如:窗口大小)作为某些 HTML 元素的 css 属性。为了避免因为布局变化导致窗口闪烁,我用不起document.onready。我实际上需要在将 DOM 元素添加到 DOM 树时触发 JS 函数。

我试过 DOMNodeInserted事件,但它似乎仅针对使用 JavaScript 在加载 HTML 代码后添加的元素触发。

我需要的是更改页面原始 HTML 源代码中显示的标记。所以现在我只是在必须更改的标记的 HTML 代码之后内联 JavaScript,但是有没有一种方法可以在不在每个这样的标记之后内联 JS 的情况下执行此操作。类似于 DOMNodeInserted,但在呈现原始 HTML 时触发。或者我还能如何实现这一点——拥有一个依赖于 JS 的布局,它在加载后不会移动(它在向用户显示之前已正确生成)并且页面中仍然有 HTML 代码(例如,不要完全从 JavaScript 生成页面) ?

更新 这是用于调整图像大小的 javascript。它尊重宽度和高度,而 widht:100% 或 height:100% 有效,除非窗口宽度/高度不小于图像本身。

function resizeImg() {
    var imgwidth = bgImg.width();
    var imgheight = bgImg.height();

    var winwidth = $(window).width();
    var winheight = $(window).height();

    var imgratio = imgwidth / imgheight;

    imgwidth = winwidth;
    imgheight = winwidth / imgratio;


    if (imgheight < winheight) { 
        imgheight = winheight;
        imgwidth = imgheight * imgratio;
    }

    $('.cover-image').css({
        width: winwidth+'px',
        height: winheight+'px'
    });
}

最佳答案

您可以使用脚本编写样式表,并在主体渲染之前将其添加到头部的新样式元素中。

或者您可以在样式表中使用媒体查询,并为不同的窗口或设备尺寸应用您喜欢的样式。

关于javascript - 如何在仍在加载时更改原始 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9021556/

相关文章:

javascript - 如何获得每天的最大值(value)?

c# - 尝试访问 iis 6.0 Web 服务时出现错误 403

Javascript:只运行一次setInterval

javascript - 在页面加载时选择默认选项卡

jquery - 需要用jquery将h3和div包装在包装器div中

javascript - AngularJS Controller 注册

javascript - 动态数字表单控件问题

css - 通过 CSS 重用 SVG 渐变

java - 关于数据结构中什么大小可以称为大或小,是否有任何约定?

javascript - 带有 SVG 文档的 jQuery