#javascript #ejs
#javascript #ejs
Вопрос:
Я создаю простую панель бота discord, я хотел, чтобы не нужно было нажимать кнопку отправки, к сожалению, <select onchange="this.form.submit()"></select>
не работает, то же самое console.log()
или такая простая функция, как document.getElementById("").innerHTML = "text";
Мой файл:
<head>
<title><%=bot.user.username%></title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no" />
<link rel="stylesheet" href="assets/assets/css/main.css" />
<noscript><link rel="stylesheet" href="assets/assets/css/noscript.css" /></noscript>
</head>
<form method="post">
<select style="float: right" name="lang" id="slct" onchange="this.form.submit()">
<option selected hidden value="no-change">LANGUAGE</option>
<optgroup style="color: #99AAB5" label="finished">
<option style="color: #7289DA" value="en">English</option>
<option style="color: #7289DA" value="pl">Polish</option>
<optgroup style="color: #99AAB5" label="beta">
<option style="color: #7289DA" value="fr">France</option>
</select>
</form>
Протестированный код:
<p id="test">Not changed</p>
<script>
document.getElementById("test").innerHTML = "Changed";
</script>
Визуализировать файл:
const dataDir = path.resolve(`${process.cwd()}${path.sep}dashboard`);
const templateDir = path.resolve(`${dataDir}${path.sep}page`);
const renderTemplate = (res, req, template, data = {}) => {
const baseData = {
bot: client,
path: req.path,
user: req.isAuthenticated() ? req.user : null
};
res.render(path.resolve(`${templateDir}${path.sep}${template}`), Object.assign(baseData, data));
};
app.get("/", (req, res) => {
const duration = moment.duration(client.uptime).format(" D[d], H[h], m[m], s[s]");
const members = client.guilds.cache.reduce((p, c) => p c.memberCount, 0);
const textChannels = client.channels.cache.filter(c => c.type === "text").size;
const voiceChannels = client.channels.cache.filter(c => c.type === "voice").size;
const guilds = client.guilds.cache.size;
renderTemplate(res, req, "index.ejs", {
stats: {
servers: guilds,
members: members,
text: textChannels,
voice: voiceChannels,
uptime: duration,
memoryUsage: (process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2),
dVersion: Discord.version,
nVersion: process.version
}
});
});
Я также тестировал с помощью window.onload
функции, кто-нибудь может помочь?
Комментарии:
1. Несвязанный совет: каждый
path.resolve(`${a}${path.sep}${b}`)
может быть записанpath.join(a, b)
.2. Где вы обрабатываете post?
3. Проверьте инструменты разработчика вашего браузера. Правильно ли выглядит дерево документа с точки зрения HTML? Есть ли какие-либо ошибки в консоли, возможно, связанные с политикой безопасности контента?
4. @Ry- Да, проблема в политике безопасности контента
5. Хорошо. Где вы используете это, добавляющее политику безопасности контента (или вы ее добавляете?), и какова политика? (Используйте сетевую панель, чтобы увидеть заголовок Content-Security-Policy в ответе на запрос документа. Или это может быть указано в сообщении об ошибке.)