Ich benutze R Shiny, um eine Webseite zu entwickeln und auch meinen eigenen R-Code.R Shiny und p5.js
Ich benutze p5.js (https://p5js.org/), um ein Spiel auf der Webseite anzuzeigen.
Wie auf der offiziellen Webseite sagt, habe ich einen HTML und den p5 Javascript Code zusammen mit der Javascript Bibliothek. Wenn ich den HTML-Code ausführe, dh wenn ich nach rechts klicke und auf Chrom drücke, um anzuzeigen, bekomme ich das gestartete Beispiel (https://p5js.org/get-started/) ohne Einfall.
Hier ist es der HTML-Code:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<!--<meta name="viewport" content="width=device-width, initial-scale=1">-->
<script language="javascript" type="text/javascript" src="libraries/p5.js"> </script>
<script language="javascript" type="text/javascript" src="sketch.js"></script>
<!-- this line removes any default padding and style. you might only need one of these values set. -->
<style> body {padding: 0; margin: 0;} </style>
</head>
<body>
</body>
</html>
Wenn ich das gleiche in Shiny tun, den Code von R-Studio laufe ich etwas von ihm nicht bekommen. Ich habe die Javascript-Dateien im www-Ordner gespeichert, wie es sein soll und ich weiß derzeit, dass mein HTML das Javascript aufgerufen hat, da ich eine Warnung in der p5-Javascript-Datei, aber außerhalb der Setup- und Zeichenmethoden eingestellt habe. Das Problem ist, dass, obwohl die Warnung geladen ist, die Setup- und Draw-Methoden anscheinend nicht aufgerufen werden, und als Konsequenz wird die Canvas nicht geladen. Ich weiß, dass sie nicht aufgerufen werden, weil ich eine Warnung in der Setup-Methode aufgerufen habe, die die HTML-Datei direkt ausführt, aber nicht, wenn ich dieselbe Datei von R-Studio aus laufe.
Hier ist es die p5 JavaScript-Code:
alert("GOOD1");
function setup() {
alert("GOOD2");
createCanvas(640, 480);
}
function draw() {
if (mouseIsPressed) {fill(0);}
else {fill(255);}
ellipse(mouseX, mouseY, 80, 80);
}
ich die HTML-Seite in Shiny laden mit der nächsten Codezeile
... ,tabItem(tabName = "tabProcessing", htmlOutput("processingMasterThesis") ...
dem Tag anhängen "processingMasterThesis" Ich habe die entsprechenden URL zu der HTML-Datei im Server.R, wie es sein soll, so ist das Problem nicht hier.
Warum kann die Ursache dafür sein? Es funktioniert, wenn ich die HTML-Datei direkt im Browser lade, aber nicht, wenn ich es aus R-Studio mache, warum?
Haben Sie Fehler in der JavaScript-Konsole? –
Hi @Kevin Workman, danke fürs Antworten. Ich erhalte diese Warnung, wenn ich versuche, die Webseite zu laden: 'Synchrone XMLHttpRequest auf dem Hauptthread ist wegen seiner schädlichen Auswirkungen auf die Erfahrung des Endbenutzers veraltet. Weitere Hilfe finden Sie unter https: // xhr.spec.whatwg.org/.'. In meiner Javascript-Datei verwende ich diesen Aufruf nicht direkt, aber vielleicht tut die p5js-Bibliothek intern. Es scheint, das Problem ist hier, aber wenn es so ist, warum bekomme ich diesen Fehler, wenn ich von RStudio die Webseite (was ich eigentlich von RStudio laufen, ist die ui.R-Datei) und nicht, wenn ich die HTML-Datei mit einem Rechtsklick? – EaglesAzul
Ich habe das Problem gelöst. Zuerst muss ich eine Variable in der p5js-Datei erstellen, die ich aus dem HTML referenzieren kann, sagen wir canvas = createCanvas (640, 480) ;. Sobald ich meine globale Variable deklariert habe, muss ich ihr nur ihre Eltern sagen, sagen wir myCanvas.parent ("divCanvas") ;. Danach müssen Sie nur in glänzendem oder reinem HTML einen Code wie diesen erstellen: # THE UI , Tags $ html (Tags $ body ( ) Tags $ head (Tags $ script (src = "app/libraries/p5.js ")) , Tags $ head (Tags $ script (src =" app/sketch.js ")) , Tags $ div (id = 'divCanvas'))) – EaglesAzul