mirror of https://github.com/jlelse/GoBlog
43 lines
1.4 KiB
JavaScript
43 lines
1.4 KiB
JavaScript
|
(function () {
|
||
|
Array.from(document.querySelectorAll('.mdpreview')).forEach(element => {
|
||
|
// Get preview container
|
||
|
let previewContainer = document.getElementById(element.dataset.preview)
|
||
|
if (!previewContainer) {
|
||
|
return
|
||
|
}
|
||
|
// Get websocket path
|
||
|
let wsUrl = element.dataset.previewws
|
||
|
if (!wsUrl) {
|
||
|
return
|
||
|
}
|
||
|
// Create and open websocket
|
||
|
let ws = new WebSocket(((window.location.protocol === "https:") ? "wss://" : "ws://") + window.location.host + wsUrl)
|
||
|
ws.onopen = function () {
|
||
|
console.log("Preview-Websocket opened")
|
||
|
previewContainer.classList.add('preview')
|
||
|
previewContainer.classList.remove('hide')
|
||
|
if (ws) {
|
||
|
ws.send(element.value)
|
||
|
}
|
||
|
}
|
||
|
ws.onclose = function () {
|
||
|
console.log("Preview-Websocket closed")
|
||
|
previewContainer.classList.add('hide')
|
||
|
previewContainer.classList.remove('preview')
|
||
|
ws = null
|
||
|
}
|
||
|
ws.onmessage = function (evt) {
|
||
|
// Set preview HTML
|
||
|
previewContainer.innerHTML = evt.data
|
||
|
}
|
||
|
ws.onerror = function (evt) {
|
||
|
console.log("Preview-Websocket error: " + evt.data)
|
||
|
}
|
||
|
// Add listener
|
||
|
element.addEventListener('input', function () {
|
||
|
if (ws) {
|
||
|
ws.send(element.value)
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
})()
|