Как в Vue3 создать глобальную переменную?
import {computed, ref} from "vue";
export const todos = ref([]);
export const activeTodos = computed(() => {
return todos.value.filter(todo => !todo.done);
});
let id = 0;
export function addTodo(name, done = false) {
todos.value.push({name, done, id: id++});
};
export function removeTodo(todo) {
todos.value = todos.value.filter(_todo => _todo.id !== todo.value.id);
};
export function toggleTodo(todo) {
todo.value.done = !todo.value.done;
};
export function clearTodos() {
todos.value = [];
};
<script setup>
import {computed, ref, onMounted} from "vue";
import Todo from "./Todo.vue";
import {todos, activeTodos, clearTodos, addTodo} from "./main.js";
const showAll = ref(true);
const selectedTodos = computed(() => {
return showAll.value ? todos.value : activeTodos.value;
});
function onEnter(event) {
addTodo(event.currentTarget.value);
event.currentTarget.value = "";
}
onMounted(() => {
addTodo("Task 01", true);
addTodo("Task 02");
addTodo("Task 03");
});
</script>
<script setup>
import {toRefs} from "vue";
import {toggleTodo, removeTodo} from "./main.js";
const props = defineProps(["todo"]);
const {todo} = toRefs(props);
function onClick() {
toggleTodo(todo);
}
function onRightClick() {
removeTodo(todo);
}
</script>
Всегда совпадает с элементом, на котором обработчик события был назначен, в отличие от свойства Event.target
, идентифицирующего элемент, на котором событие возникло.
в чем проблема?
{mode: "no-cors"}
.response
ты не получишь при кросс-доменных запросах с данным режимом.response
годится исключительно только для Cache API в Service Worker. Задача: отслеживать факт изменения веб-страницы
const targetNode = document.querySelector("body");
const config = {attributes: true, childList: true, subtree: true};
function callback(mutationsList, observer) {
console.log("Что-то изменилось", mutationsList);
}
const observer = new MutationObserver(callback);
observer.observe(targetNode, config);
<template>
<label>
<input v-model="checked" type="checkbox">
Show input
</label>
<br>
<input v-if="checked" v-model="msg">
</template>
<script setup>
import {ref} from "vue";
const msg = ref("Hello World!");
const checked = ref(false);
</script>
пишет, что CORS
Может альтернативы какие-нибудь
подцепить как внешний ресурс, но пишет, что CORS и всё такое.
content-type: text/plain; charset=utf-8
. // ==UserScript==
// @name Toster Example
// @match https://qna.habr.com/*
// @match https://toster.ru/*
// @grant GM.xmlHttpRequest
// @connect https://example.com
// ==/UserScript==
!async function() {
console.log("userscript start");
const response = await new Promise((resolve, reject) => {
GM.xmlHttpRequest({
method: "get",
url: "https://example.com",
responseType: "text",
onload: resolve,
onerror: reject,
});
});
console.log("response:", response);
const {response: text} = response;
console.log("text:", text);
}();
@match
), и успешно логирует в консоль содержание https://example.com несмотря на CORS. const blob = new Blob(["The content of the txt file."], {type: "text/plain"});
const blobUrl = URL.createObjectURL(blob);
const a = document.createElement("a");
a.download = "filename.txt";
a.href = blobUrl;
a.click();
setTimeout(() => URL.revokeObjectURL(blobUrl), 10_000);
в каком виде CryptoJS принимает в себя инстанс объекта самого себя и что он хеширует, чтобы повторить этот метод используя другие инструменты
мне надо чтобы оно НЕ РАБОТАЛО также как и НЕ РАБОТАЕТ в js,
неужели по Вашему я могу переместиться во времени и пространстве к программисту, который когда-то захешировал слово таким методом и сказать ему "эй, ты хешируешь объект, не надо, хешируй строку" и дать ему этот код?
SHA512(
SHA512(
SHA512("hello".getBytes())
)
).toString("hex");
SHA512(
SHA512(
SHA512("hello".getBytes()).toString("hex").getBytes()
).toString("hex").getBytes()
).toString("hex");
чтобы повторить этот метод используя другие инструменты
import java.math.BigInteger;
import java.nio.charset.StandardCharsets;
import java.security.*;
public class Main {
public static void main(String[] args) throws NoSuchAlgorithmException {
byte[] bytesOfMessage = "hello".getBytes(StandardCharsets.UTF_8);
MessageDigest SHA512 = MessageDigest.getInstance("SHA512");
byte[] digest = SHA512.digest(bytesOfMessage);
Main.log(digest);
for (int i = 0; i < 4; i++) {
digest = SHA512.digest(digest);
Main.log(digest);
}
}
private static void log(byte[] digest) {
var hex = new BigInteger(1, digest).toString(16);
if (hex.length() % 2 == 1) {
hex = "0" + hex;
}
System.out.println(hex);
}
}
chrome.storage.local.get(console.log);
chrome.storage.sync.get(console.log);
найти позиции (начало и конец) выделенного текста.
window.getSelection();
git filter-branch
new Blob([new ArrayBuffer(2*1024**3)]); // Uncaught RangeError: Array buffer allocation failed
new Blob([new ArrayBuffer(2*1024**3 - 2*1024**2)]); // OK