zengyunsi
(运思 曾)
15. September 2023 um 14:34
1
Ich möchte einen Stil für Videos in Discourse ändern. Wie kann ich ein JavaScript-Skript vor dem </body>-Tag einbetten?
Ich habe versucht, es im HEAD zu bearbeiten, aber es funktioniert nicht perfekt!
Danke!
<script src="/plyr.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function () {
const player = new Plyr('video');
});
</script>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>My Video Player</title>
<link rel="stylesheet" href="https://cdn.plyr.io/3.6.12/plyr.css">
<script src="https://cdn.plyr.io/3.6.12/plyr.js"></script>
</head>
<body>
<video controls>
<source src="your-video.mp4" type="video/mp4">
</video>
<script>
document.addEventListener('DOMContentLoaded', function () {
const player = new Plyr('video');
});
</script>
</body>
</html>
pfaffman
(Jay Pfaffman)
15. September 2023 um 15:54
2
Wo ändern Sie es? In einer Theme-Komponente, die Sie in der UX erstellt haben? (Ich weiß nicht, was dieses Bild ist.)
Lhc_fl
(Linca)
16. September 2023 um 14:06
4
Dies liegt höchstwahrscheinlich daran, dass Sie diesen Domainnamen nicht zur CSP-Richtlinie hinzugefügt haben.
Und ehrlich gesagt, empfehle ich Ihnen, diese JS-Datei direkt zu kopieren und in das <script>-Tag einzufügen, um zu verhindern, dass Benutzer JS von einer externen Website laden. Dies ist nicht sicher – es sei denn, Sie vertrauen dieser Website vollständig.
1 „Gefällt mir“
zengyunsi
(运思 曾)
16. September 2023 um 15:38
5
Nur dieser Satz ist das Problem, die vorherigen sind kein Problem
<script>
document.addEventListener('DOMContentLoaded', function () {
const player = new Plyr('video');
});
</script>
</body >
zengyunsi
(运思 曾)
16. September 2023 um 15:40
6
Kann nur am Ende von body platziert werden, dies ist, um den Player zu initialisieren, nachdem die Seite geladen wurde.
Lhc_fl
(Linca)
16. September 2023 um 15:41
7
Sie können die discourse plugin-api verwenden.
You can use the discourse plugin api.
<script type="text/discourse-plugin" version="0.8">
api.decorateCookedElement((elem, helper) => {
const player = new Plyr('video');
}, {id: "beauitfy-video"})
</script>
Ah, Sie müssen es nur einmal laden? Dann tun Sie so, als hätte ich es nicht gesagt.
Ah, you only need to load once? Then pretend I didn’t say it
运思 曾:
只能放在body结尾
Das macht keinen Unterschied. Haben Sie keinen Event-Listener?
It makes no difference. Don’t you have an eventListener?
zengyunsi
(运思 曾)
16. September 2023 um 15:56
8
Ich verstehe nicht, wie das geht. Es muss vor dem Body platziert werden.
zengyunsi
(运思 曾)
16. September 2023 um 16:15
9
Ich habe nachgeschaut und es verstanden. Füge es hier ein.
system
(system)
Geschlossen,
17. Oktober 2023 um 03:31
11
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.