【发布时间】:2020-09-12 09:02:07
【问题描述】:
我只想为最小宽度为 1001 像素的屏幕尺寸加载特定的 JavaScript sn-p,以加快较小设备的加载时间。 因此,我使用 MediaQuery 功能来识别最小宽度并对这样的变化做出反应:
const mediaQuery = window.matchMedia('(min-width: 1001px)');
mediaQuery.addEventListener('change', (event) => {
if (event.matches) var t = (0, s.qs)(".js-twitter-feed");
if ("undefined" != typeof twitterFeed && t) {
t.classList.remove("u-hide");
var r = document.createElement("div");
r.innerHTML = '<a class="twitter-timeline" data-height="500" href="https://twitter.com/'.concat(twitterFeed, '">Tweets by ').concat(twitterFeed, "</a>"), t.appendChild(r), (0, o.loadScript)("https://platform.twitter.com/widgets.js")
}
});
这个 sn-p 的问题在于,它仅在执行一次屏幕尺寸更改时才加载包含的 Twitter 小部件,而不是在页面正在加载且 min-width 1001px 已经为 true 时加载。 这就是为什么我寻找另一个看起来像这样的解决方案:
if (matchMedia) {
const mq = window.matchMedia("(min-width: 1001px)");
mq.addListener(WidthChange);
WidthChange(mq);
}
// media query change
function WidthChange(mq) {
var t = (0, s.qs)(".js-twitter-feed");
if ("undefined" != typeof twitterFeed && t) {
t.classList.remove("u-hide");
var r = document.createElement("div");
r.innerHTML = '<a class="twitter-timeline" data-height="500" href="https://twitter.com/'.concat(twitterFeed, '">Tweets by ').concat(twitterFeed, "</a>"), t.appendChild(r), (0, o.loadScript)("https://platform.twitter.com/widgets.js")
}
}
此代码还为宽度小于 1001 像素的屏幕加载 Twitter 小部件。 我该如何解决这个问题?
【问题讨论】:
标签: javascript media-queries width