Beiträge von Sempervivum

    Zitat

    css3 das gleiche wie css

    CSS3 ist eine relativ neue Version von CSS und enthält einige Erweiterung, u. a. Transition und Animation, das Du gerade kennen gelernt hast.

    Zitat

    kann man css3 auch für javascripte bzw in meinen fall userscripte benutzen

    Ja, CSS3 kann man in Verbindung mit Javascript verwenden und da userscript auch Javascript ist, auch damit. Eine gängige Technik ist z. B., eine Animation oder Transition durch Setzen und Löschen einer Klasse zu starten bzw. zu stoppen.

    Code
    body.anim {-webkit-animation: colorchange 5s infinite; }

    Außerdem gibt es für Animationen eine Reihe von Events, wodurch Javascript ebenfalls damit interagieren kann.

    Zitat

    das die farben langsam zur anderen farbe wechselt ist wohl nicht möglich

    Doch, auch Farben lassen sich animieren.

    Zitat

    dazu währe es ja einfach eine schleife zu machen die immer die zahlen ein höhr macht

    Wäre im Prinzip möglich. Eine wesentlich bessere Möglichkeit ist jedoch, CSS-Animationen zu verwenden. Informiere dich darüber.

    Super, dass es funktioniert. Aber ich glaube, der Umweg über Localstorage ist überflüssig. Probiere es so:

    Code
    document.body.addEventListener('click', copy, true);
    function copy(e){
        var inp = document.createElement("input");
        inp.value = window.getSelection();
        document.body.appendChild(inp);
        inp.select();
        document.execCommand("copy");
        inp.parentNode.removeChild(inp);
    }
    Zitat

    dein code wie er da steht klappt so leider nicht

    Doch, der funktioniert, ich habe ihn getestet.

    Zitat

    aber das feld soll ja nicht angezeigt werden

    Wird es auch nicht, es wird temporär erzeugt, in den DOM eingefügt und nach dem Copy gleich wieder gelöscht.

    Zitat

    ich glaube mitlerweile das geht nicht mit userscripte

    Und ich bin hundertprozentig sicher, dass es geht. Du postest immer, dass der Text in einer Variablen steht. Wie kommt er denn dort hinein?

    Dann führt wahrscheinlich kein Weg daran vorbei, den Text aus der Variablen in ein temporäres input-Feld einzutragen und von dort aus in die Zwischenablage zu kopieren:

    Dies hat bei mir nur funktioniert, wenn ich das input mit appendChild() in das DOM eingefügt habe.

    Zitat

    addGlobalStyle('img:hover { background: yellow;transform:scale(1.5);transition: all 2s;border:1px solid red; }');

    was muss ich da ändern ,das bei mouseout der effekt auch funktioniert

    Du brauchst das transition nur dem img ohne hover zuzuweisen:

    Code
    addGlobalStyle('img:hover { background: yellow; transform:scale(1.5); border:1px solid red; }');
    addGlobalStyle('img { transition: all 2s; }');

    Noch zu dieser Frage:

    Zitat

    kann man bei userscripte eigentlich die css auch so nehmen wie man die im netz findet

    Eine alternative Möglichkeit könnte dieses sein:

    Code
        var stl = document.createElement("style");
        stl.innerHTML = "body {color: red;}";
        document.body.appendChild(stl);

    Ist das CSS umfangreicher, müsstest Du es auf eine Zeile komprimieren. Das wäre aber genau so gut bei dem Verfahren mit addGlobalStyle() möglich.

    PS: Test ergibt, dass es so nicht funktioniert, weil man auf diese Weise offenbar nur Attribute auswerten kann und keine CSS-Eigenschaften. Dies funktioniert jedoch:

    CSS

    Code
            *[class*='magnify']:hover {
                transform: scale(1.2);
            }

    JS

    Code
                var elems = document.querySelectorAll("*");
                for (var i = 0; i < elems.length; i++) {
                    var ele = elems[i];
                    if (Object.values(ele.style).indexOf('background-image') > -1) ele.classList.add('magnify');
                }

    Mal sehen, vielleicht findest Du dafür ja auch noch eine einfachere Lösung :)

    Zitat

    addGlobalStyle('img:hover { background: yellow;transform:scale(1.5);border:1px solid red; }');

    Geniale Idee, so ist es noch viel einfacher!

    Zitat

    ich habe auch ein paar bilder die als background images gespeichert sind,also in url(bild). wie kann ich das bild den vergrössern, weil in meinen fall ist das element ein div ...ein css mit div erstellen währe etwas doof weil auf der seite noch mehr div ist was da nicht mit spielen soll.

    Du kannst einen CSS-Selektor auf Grund von Attributen verfeinern:

    https://www.mediaevent.de/css/css-selekt…utselektor.html

    Also in deinem Fall:

    Code
    div[background-image] {transform: scale(1.5)}
    div[background*='url('] {transform: scale(1.5)}

    Nebeneffekt: Auch der Inhalt des div wird vergrößert. Will man das vermeiden, müsste man intensiver nachdenken.

    PS: Man kann das Ganze stark vereinfachen, wenn man CSS und transform:scale() verwendet. Das hat zusätzlich den Vorteil, dass sich das Layout beim Vergrößern nicht verschiebt.

    Du brauchst nicht auf die Bilddaten selber zuzugreifen, sondern musst nur die entspr. Attribute manipulieren. Statt deines Ansatzes mit mousemove empfehle ich, mouseover und mouseout zu verwenden, dann kannst Du auf eine Neuigkeitsauswertung verzichten.

    Dieses funktioniert bei mir im Tampermonkey:

    Zitat

    da ich ein userscript bauen will

    Was meinst Du damit? So ein Skript für Tampermonkey o. ä., das man auf eine fremde Seite anwenden kann?

    Du musst berücksichtigen, dass, wenn ein Bild in Originalgröße eingebunden ist, dieses sich nur mit Qualitätsverlust vergrößern lässt.

    Ein img-Element ist inhaltsleer, es hat keinen Inhalt in deinem Sinne, auf den Du mit innerHTML oder textContent zugreifen könntest.

    Außerdem ist es verfehlt, in einem onmousemove-Handler ein alert anzubringen, weil dieser den ganzen Browser blockiert und das onmousemove-Element wiederholt triggert.

    Zitat

    Ganz am Schluss will ich versuchen mit den Daten aus dem Formular dann zu arbeiten.

    Zitat

    Wenn ich das richtig verstehe, muss ich die Variablen aus der Funktion herausholen

    Aus der Funktion heraus holen geht nur über einen Rückgabewert oder globale Variablen. Ersteres geht nicht bei einem Eventhandler und letzteres würde ich nicht empfehlen.
    Statt dessen empfehle ich, die weitere Verarbeitung ebenfalls in der Funktion ausgabe() zu machen:

    Code
    function ausgabe (event)
        {
        event.preventDefault();
        var autoerzeuger = document.getElementById ('autohersteller').value;
        var farbevonauto = document.getElementById ('farbeauto').value;
        var maxgeschw = document.getElementById ('maxgeschwindigkeit').value;
        
        document.getElementById("anzeige").innerHTML = "Hersteller: " + autoerzeuger + "Farbe: " + farbevonauto + " maximale Geschwindigkeit: " + maxgeschw;
        // hier die weitere Verarbeitung
      }

    Außerdem empfehle ich, auf document.write() zu verzichten. Das Verhalten ist u. U. schwer einzuschätzen. Besser die Daten mit innerHTML in einen Container eintragen.

    Der Grund ist wahrscheinlich etwas unerwartet: Durch das Submit des Formulars wird das Formular abgeschickt, d. h. die unter "action" angegeben PHP-Seite wird aufgerufen und die Parameter werden übergeben. Ist "action" nicht definiert, wird einfach die aktuelle Seite aufgerufen bzw. neu geladen. Dabei geht alles, was Du mit Javascript definiert und in den Ausgabe-Container geschrieben hast, verloren.

    Um den Fehler zu beheben, musst Du die Default-Aktion des Submit, d. h. das Laden der Seite, unterdrücken. Das geschieht mit event.preventDefault():

    Kann beim Lesen keinen Fehler entdecken. Bei meinen Tests war $woerter anfangs leer, weil ich die Datei gesamt.txt anfangs nicht UTF8-kodiert gespeichert hatte. Dann schlägt das Kodieren nach JSON fehl, wenn Umlaute oder ß vorhanden sind und das Array ist leer.

    Wenn Du es damit nicht beheben kannst, dann lade den Code hoch und poste die URL. Du kannst ja eine Kopie anlegen, damit das, was funktioniert, online bleibt.

    Der Ansatz ist schon richtig, sofern $woerter ein Array ist, wird auch Wortliste eines sein. Dann kannst Du ein zufälliges Wort wie folgt auswählen:

    PHP
            var woerter = <?php echo json_encode($woerter); ?>;
            console.log(woerter);
            var idx = Math.floor(Math.random() * woerter.length);
            var zufallswort = woerter[idx];
            console.log(zufallswort);

    Ja, jetzt wo ich das sehe, verstehe ich, was Du vor hast. Da warst Du aber fleißig, ein Array mit 600 Wörtern! Oder ist das mit PHP generiert?

    Mein Code funktioniert bei mir einwandfrei. Ich hatte ihn zunächst nur mit Ziffern getestet und mit Wörtern funktionierte er nicht. Dann habe ich ihn korrigiert und in meinem Posting geändert. Hast Du vielleicht vorher die fehlerhafte Version genommen?

    Wenn Du bei jedem Druck auf Start ein neues Wort auswählen willst, wäre es natürlich besser, das ganze Array in JSON zu kodieren und von PHP an JS zu übergeben.