script
с нужным содержимым. Примерно так: function runInScript() {
// здесь везь код, независимый от иных функций
document.loremipsum()
}
document.head.append(
Object.assign(
document.createElement('script'),
{
innerHTML: `(${runInScript.toString()})()`,
onload() { this.remove() }
}
)
);
position: sticky
в css, который именно для этого и предусмотрен, нельзя, то сделай так чтоб было можно. Потому что это единственный реально адекватный вариант, а какие-то там проблемы с твоим overflow
- это твой косяк, который и надо решать.sticky
- это решали хитрой вёрсткой, где "на самом деле" никакая позиция не меняется, а fixed
(а ещё раньше absolute
) дубликат элемента показывали\скрывали по условию.requestAnimationFrame
и getBoundingClientRect
, не привязываясь к событию scroll, но не пробовал ибо не нужно. textContent
\innerText
\append
на innerHTML
\insertAdjacentHTML
. @message-notice-content-bg
, в v5 через свойство contentBg
: .custom-class .ant-message-notice-content { ... }
import { Ref, computed, ref, watch, onMounted, onUnmounted } from 'vue';
function isHTMLElement(arg: unknown): arg is HTMLElement {
return !!arg && arg instanceof HTMLElement;
}
function useCSSVariable(
variable: string,
el: HTMLElement | Ref<HTMLElement> = document.documentElement
) {
if (!variable.startsWith('--')) variable = `--${variable}`;
if (!isHTMLElement(el)) watch(el, value => (el = value), { immediate: true });
const prev = ref();
let timeoutId: number;
const interval = () => {
const current = isHTMLElement(el)
? getComputedStyle(el).getPropertyValue(variable)
: null;
if (current !== prev.value) prev.value = current;
timeoutId = window.setTimeout(interval, 100);
};
onMounted(() => {
interval();
});
onUnmounted(() => {
clearTimeout(timeoutId);
});
return computed<string>({
set(value) {
let current: null | string = null;
if (isHTMLElement(el)) {
el.style.setProperty(variable, value);
current = el.style.getPropertyValue(variable);
}
if (prev.value !== current) prev.value = current;
},
get() {
return prev.value;
}
});
}
clip-path
прекрасно умеет скруглять, rtfm.this.$set \ Vue.set
при добавлении нового ключа.const templates = reactive(keyBy(templatesArr, 'id'))
for (let templateId in templates) {
const devices = devicesArr.filter(device => device.templateId === templateId)
Vue.set(templates[templateId], 'devices', devices);
Vue.set(templates[templateId], 'settings', {});
}
// либо просто так:
const templates = keyBy(templatesArr, 'id');
for (let templateId in templates) {
const devices = devicesArr.filter(device => device.templateId === templateId)
Object.assign(templates[templateId], { devices }, {settings: {}})
}
reactive(templates);
reactive
, вместо него был Vue.observable
. Но может добавили, хз, лень смотреть.:) могут ли они видеть на каких сайтах я сижу?Могут, если сильно захотят. Это не стандартная опция для пользовательского сегмента, но при желании и щепотке красноглазия - всё возможно.
как тогда избежать этого?Только VPN(или любой иной шифрованный туннель).
возможно ли запретить им видеть когда я сижу на их инетеТолько если держать VPN соединение поднятым постоянно, при этом гоняя по нему паразитный трафик примерно равный твоему обычному потреблению - иначе тупо по пику трафика легко будет понять.