Durchsuche Foren

(Erweiterte Suche)

Foren-Statistiken
» Mitglieder: 43.431
» Neuestes Mitglied: 12betno1
» Foren-Themen: 506
» Foren-Beiträge: 2.098

Komplettstatistiken

Benutzer Online
Momentan sind 170 Benutzer online
» 0 Mitglieder
» 168 Gäste
Bing, Google

Aktive Themen
div(tabelle) neugeladen b...
Forum: Javascript
Letzter Beitrag: black79
Vor 5 Stunden
» Antworten: 4
» Ansichten: 32
What are the psychologica...
Forum: Css
Letzter Beitrag: azaviona
Heute, 07:58
» Antworten: 0
» Ansichten: 8
Ajax Abfrage
Forum: Php
Letzter Beitrag: taxlegit24
Gestern, 06:43
» Antworten: 3
» Ansichten: 366
Probleme Firebase Databas...
Forum: Javascript
Letzter Beitrag: PrimoCenturio
22.04.2024, 14:15
» Antworten: 4
» Ansichten: 120
Verbindung von Entscheidu...
Forum: Javascript
Letzter Beitrag: Ashriel
16.04.2024, 11:02
» Antworten: 3
» Ansichten: 115
Neu laden ohne Scrolling
Forum: Javascript
Letzter Beitrag: Tom
16.04.2024, 08:48
» Antworten: 0
» Ansichten: 37
Formularfelder addieren u...
Forum: Javascript
Letzter Beitrag: heena123
16.04.2024, 08:03
» Antworten: 17
» Ansichten: 374
FMOVIES
Forum: Javascript
Letzter Beitrag: xomanig690
16.04.2024, 07:07
» Antworten: 0
» Ansichten: 43
Spam gelöscht
Forum: Ankündigungen,Neuigkeiten
Letzter Beitrag: rzscout
10.04.2024, 23:37
» Antworten: 0
» Ansichten: 180
Reihenfolge der Karten
Forum: Brauche Javascript / Userscript
Letzter Beitrag: hardee
10.04.2024, 17:54
» Antworten: 4
» Ansichten: 122

  Verhalten im Loop
Geschrieben von: GombersJS - 05.10.2022, 10:00 - Forum: Javascript - Antworten (2)

Ich habe bei ioBroker ein Problem eröffnet. Das ist ziemlich länglich geworden - es geht mir im Wesentlichen jetzt um diesen Post.



Code:
var switchStatus, Intervall;
on({id: "shelly.0.SHSW-1#E8DB84D401CC#1.ext.switch1"/*Switch*/, change: "ne"}, async function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  switchStatus = (obj.state ? obj.state.val : "");
  console.log(('Scriptanfang Status: ' + String(switchStatus)));
  if (switchStatus == true) {
    Intervall = setInterval(async function () {
      console.log(('Loopanfang Status: ' + String(switchStatus)));
      switchStatus = (obj.state ? obj.state.val : "");
    }, 20000);
  } else {
    console.log(('Else Status: ' + String(switchStatus)));
    (function () {if (Intervall) {clearInterval(Intervall); Intervall = null;}})();
  }
});


Die Variable "switchStatus" wird aus einem Objekt ausgelesen und in der gezeigten "if/then/else" Abfrage ausgewertet.

Im "then"-Zweig wird, wie man sieht, im Loop eine Meldung ausgegeben udn der Wert der Variablen "switchStatus" neu ermittelt. Aber es gibt keine Ende-Bedingung. Meines Erachtens müsste der Loop damit eben endlos laufen. Tatsächlich wird, wenn der "switchStatus" auf false geht, der "else"-Zweig angestoßen. Die Logik verstehe ich nicht, die "if"-Abfrage ist Vergangenheit, wieso weiß "setInterval()" was von dem else-Zweig?


Irgendeine logische Erklärung wäre mir lieb.

Drucke diesen Beitrag

  .txt einlesen und in Liste schreiben
Geschrieben von: prodliluk - 05.10.2022, 02:05 - Forum: Javascript - Antworten (1)


Hallo zusammen! 


Ich übe etwas mit javascript. Für das kleine Programm, an dem ich arbeite, sollte eine .txt-File eingelesen werden und in einer Liste abgespeichert werden. 
Hier mein Versuch: 


Code:
class Champion {
    constructor(champName, currentStatus) {
      this.name = champName;
      this.status = currentStatus;
    }
  }

  change();

  function change(){
    var rawFile = new XMLHttpRequest();
      rawFile.open("GET", "test.txt", true);
      rawFile.onreadystatechange = function() {
        if (rawFile.readyState === 4) {
          var allText = rawFile.responseText;
          document.getElementById("test").innerHTML = allText;
          console.log(allText);
          const champArray = textfile.split('\n');

        var list = [];

        for (let i = 0; i < champArray.length; i++){
            let currentChamp = champArray[i].split(', ');
            const c = new Champion;
            c.champName = currentChamp[0];
            c.currentStatus = currentChamp[1];
            list.push(c);
            console.log(list);
            return allText;
        }
    }
      //console.log(allText);
      rawFile.send();
  }
};
Weiß jemand, wie ich das am besten mache?
Danke im Voraus!  Smile

(Die Datei ist folgendermaßen aufgebaut:
Code:
Name1, 1
Name2, 1
Name3, 0
Name4, 1

Drucke diesen Beitrag

  JavaScript Entwickler für eine Online Veranstaltung gesucht
Geschrieben von: dev-sky - 02.10.2022, 05:51 - Forum: Javascript - Keine Antworten

Für meine abschließende Certified Technical Trainer (CTT+) Zertifizierung muss ich noch ein Online-Training mit 5 Teilnehmern durchführen. Dafür suche ich mind. 5 motivierte JavaScript/TypeScript interessierte oder die, die es werden wollen. Die notwendige online Veranstaltung dauert insgesamt ca. 1 Stunde. Thema wird sein "TypeScript für JavaScript Entwickler".
Datum und Zeit kann mit den Teilnehmern flexibel abgestimmt werden.

Folgendes wäre zu leisten:

  • ausfüllen eines kurzen Fragebogens vor dem Kurs
  • ausfüllen einer Teilnehmerbestätigung mit Unterschrift und zurücksenden (Bild/PDF)
  • aktive Teilnahme an der Online Schulung ca. 1 Stunde
  • Feedback am Ende
Während der kurzen Schulung wird es auch eine kleine praktischen Übung geben, daher sind Vorkenntnisse in JavaScript erforderlich.
Der gesamte zeitliche Aufwand beträgt ca. 2 Stunden.Neben der kostenlosen Schulung erhält jeder Teilnehmer natürlich eine Entschädigung für den Aufwand Smile

Drucke diesen Beitrag

  Hintergrundbild wechseln
Geschrieben von: Walchi - 29.09.2022, 17:51 - Forum: Javascript - Antworten (12)

Einen schönen Guten Abend,

ich bräuchte bitte Hilfe - habe ein Problem mit JavaScript. Bin hier noch eher Anfänger - sorry ...

Ich habe eine Seite, wo ein Hintergrundbild drin ist. Dies ist in der .html-Seite wie folgt eingebunden:

Code:
<div class="header_image"><script>var headImage =    "assets/images/Header_Tom/Winter/Winterspass_Header.jpg";</script>
<picture>
     <source media="(min-width:661px)" 
         srcset="assets/images/Header_Tom/Winter/Winterspass_Header-gross.jpg">
     <source media="(max-width:660px)" srcset="assets/images/Header_Tom/Winter/Winterspass_Header-
         klein.jpg">
     <img id="headImageImg" src="img/px.webp" data-src =
          "assets/images/Header_Tom/Winter/Winterspass_Header-gross.jpg" alt="" width="2000"   
           height="1000"/>
</picture>
<link href="assets/images/Header_Tom/Winter/Winterspass_Header-gross.jpg" rel="preload" as="image" media="(min-width:661px)"/>
<link href="assets/images/Header_Tom/Winter/Winterspass_Header-klein.jpg" rel="preload" as="image" media="(max-width:660px)"/></div>

So weit, so gut. In der Picture-Section wird das Hintergrundbild gesetzt - beim Bild Header-groß handelt es sich um ein 1000 x 500 er Bild, heruntergerechnet, was auf den 2000 x 1000 eingesetzt wird. Also ein unscharfes erstes Bild.

Gesetzt ist auch eine Variable headImage, wo das endgültige Foto mit den 2000 x 1000 drin ist.
Nach dem Laden der Seite sollte eine Function einfach den src auf das neue Foto austauschen. Das geht nicht.

Mein Versuch dazu (mal zum probieren als Click-Button drauf - kommt dann als Onload-Function rein) :

Code:
<p id="demo">JavaScript can change HTML content.</p>

<script>
function loadBild() {
var _name = headImage;
window.alert(_name);
_name = document.getElementById("headImageImg").src;                            
window.alert(_name);
picture = new Image();
picture.src = "assets/images/Header_Tom/Zimmer/Dachstein_Header-gross.jpg";    
document.getElementById("headImageImg").src = picture.src;
_name = document.getElementById("headImageImg").src;                            
window.alert(_name);
}
</script>

<button type="button" onclick='loadBild();document.getElementById("demo").innerHTML = "Hello JavaScript - Aufruf ist erfolgt"'>Click Me!</button>
Sorry, der Code ist durch das viele Probieren und den vielen window.alert drin verwirrend, aber dadurch sehe ich, dass der Code durchläuft und die Variablen passen. Im einzelnen passiert hier :

Am Anfang habe ich nur geschaut, ob in der Variable headImage der Wert drin ist. Ist für mich nur ein Test.
 
Dann mache ich ein new(Image), und lade das Foto, das ich drin haben will. Damit ich sicher sein kann, dass das Foto da ist und geladen ist, habe ich hier ein anderes Foto genommen, als in der Endversion. Und zwar eines, das auf der Website bereits drauf ist. Das muss ja dann schon geladen sein.

Dann weise ich dem Hintergrundbild die .src des Fotos zu.
Die window.alert sagen mir, dass sich der .src-Wert ändert. 

Aber das Bild bleibt gleich. Ich könnte mir vorstellen, dass ein Hintergrundbild anders in der Seite eingebettet ist als ein normales Foto. Und ich hier den Hintergrund neu zeichnen muss? Oder was kann schuld sein.

Die Seite ist als Versuchsseite scharf, und zwar hier:
https://www.alpenhof.com/de/preise/winte...spass.html

Was mache ich falsch? Ist ja eigentlich eine einfache Übung, aber ich stecke.

Danke für Eure Hilfe,

LG Walchi

Drucke diesen Beitrag

  Welches Buch mit Aufgaben und Lösungen empfehlt ihr einem JavaScript-Anfänger?
Geschrieben von: nbergmann - 28.09.2022, 13:10 - Forum: Javascript - Antworten (1)

Welches Buch mit Aufgaben und Lösungen empfehlt ihr einem JavaScript-Anfänger?

Drucke diesen Beitrag

  addieren/anzeigen von Zeiten
Geschrieben von: schmalen - 27.09.2022, 17:54 - Forum: Javascript - Antworten (4)

Hallo, ich habe mir ein PDF Formular erstellt um Stunden/Zeiterfassung zu registrieren.

Leider komme ich aber nicht mehr weiter, da mir auch ausgereifte Kenntnisse im Java Bereich fehlen. 
Aber evtl. bekomme ich hier Unterstützung meines Projekts?

Ich habe hier eine Script und ein Demo PDF beigefügt.


Code:
var Minuten = [0,0,0] ;
for (i = 1; i <5; i++) {
if (this.getField("VonFeld" + i).value && this.getField("BisFeld" + i).value) {
Minuten[i] = (1440 + inMinuten(this.getField("BisFeld" + i).value) - inMinuten(this.getField("VonFeld" + i).value)) % 1440 ;
this.getField("StundenFeld" + i).value = MinutenZuZeitstring(Minuten[i])
} else {
this.getField("StundenFeld" + i).value = ""
}
}
event.value = MinutenZuZeitstring(Minuten[1] + Minuten[2]) ;


function inMinuten(Zeitstring) {
var arr = (Zeitstring + ":0").split(":").map(Number) ;
return arr[0] * 60 + arr[1]
}

function MinutenZuZeitstring(Minuten) {
return Math.floor(Minuten / 60) + (100 + Minuten % 60).toString().replace(/^1/,":") ;
}


Es geht darum, das anstatt 5 nur2 Felder in der Gesamtsumme addiert werden, und ich weiss nicht wie und wo ich da noch genau was ändern soll obwohl die Schleifenroutine <6
eingetragen ist

Danke schon mal im Voraus für die weitere Hilfe

Gruss Andreas



Angehängte Dateien
.pdf   DemoStundenNachweis.pdf (Größe: 52,16 KB / Downloads: 3)
Drucke diesen Beitrag

  Check if html th is on focus
Geschrieben von: opti13403 - 27.09.2022, 09:14 - Forum: Javascript - Antworten (1)

I want to find out wether my HTML Event is on focus (not if it is clicked but focused by navigating with the keyboard).

Code:
myElement === document.activeElement
is only true when the element is clicked but not when it's focused by keyboard navigation.
Code:
    tooltip(){
  var myElement = document.getElementById("myID");
  let myEvent = "";
  if (myElement=== document.activeElement){
     myEvent = "focus";
  }

return myEvent;
};



<th id="myID" *ngSwitchCase="'validation'" tooltipEvent={{tooltip()}} pTooltip="I am a tooltip"
          tooltipPosition="top" [escape]="false"   [pSortableColumn]="column.field" [ngStyle]="column.style">
            <div class="col-title">
            <span data-testid="column-validationl-header" class="ui-column-title" >Validation </span>
              <p-sortIcon [field]="column.field" *ngIf="column.sortable"></p-sortIcon>
            </div>
          </th>
any Ideas?

Drucke diesen Beitrag

  HTML DOM Element cloneNode()
Geschrieben von: enteR - 24.09.2022, 11:55 - Forum: Javascript - Antworten (2)

Hallo 

Ich habe folgendes Problem 

ich würde gerne 2 inputfelder und 2 selectfelder über einen button kopieren. 
das funktioniert soweit auch ganz gut. 

Jedoch ist das problem jetzt das ich bei meinen 2 selectboxen entweder keinen inhalt habe oder aber ich nichts selectieren kann. 
Das Problem einmal visuell als gif 
https://gifyu.com/image/S3Q1Q

HTML

Code:
<section class="mb-3" id="SchadenortabweichendSection" style="display: none">
                                    <div class="card">
                                        <h5 class="card-header">Schadensort Abweichend
                                            <button class="btn btn-primary" type="button" onclick="myFunction()">Copy
                                            </button>
                                        </h5>
                                        <div class="card-body">
                                            <div id="tocopy">
                                                <div class="row">
                                                    <div class="col-md-3">
                                                        <div class="form-group">
                                                            <div class="input-group">
                                                                <input name="form_schadenortabweichend_name[]"
                                                                       type="text" class="form-control"
                                                                       placeholder="Vorname/Nachname">
                                                            </div>
                                                        </div>
                                                    </div>

                                                    <div class="col-md-3">
                                                        <div class="form-group">
                                                            <select class="bootstrap-select"
                                                            name="schadenort_ansprechpartner_six_geschoss[]">
                                                            <option value="">Geschoss</option>
                                                            <option value="KG">KG</option>
                                                            <option value="UG">UG</option>
                                                            <option value="EG">EG</option>
                                                            <option value="1. OG">1. OG</option>
                                                            <option value="2. OG">2. OG</option>
                                                            <option value="3. OG">3. OG</option>
                                                            <option value="4. OG">4. OG</option>
                                                            <option value="5. OG">5. OG</option>
                                                            <option value="6. OG">6. OG</option>
                                                            <option value="7. OG">7. OG</option>
                                                            <option value="8. OG">8. OG</option>
                                                            <option value="9. OG">9. OG</option>
                                                            <option value="10. OG">10. OG</option>
                                                            <option value="11. OG">11. OG</option>
                                                            <option value="12. OG">12. OG</option>
                                                            </select>
                                                        </div>
                                                    </div>

                                                    <div class="col-md-3">
                                                        <div class="form-group">
                                                            <select class="bootstrap-select"
                                                                    name="schadenort_ansprechpartner_six_lage[]">
                                                                <option value="">Lage in der Etage</option>
                                                                <option value="Links">Links</option>
                                                                <option value="Mitte">Mitte</option>
                                                                <option value="Rechts">Rechts</option>
                                                                <option value="Mitte Links">Mitte Links</option>
                                                                <option value="Mitte Rechts">Mitte Rechts
                                                                </option>
                                                            </select>
                                                        </div>
                                                    </div>

                                                    <div class="col-md-3">
                                                        <div class="form-group">
                                                            <div class="input-group">
                                                                <input name="schadenort_ansprechpartner_six_telefon[]"
                                                                       type="text" class="form-control"
                                                                       placeholder="Telefon/Mobil">
                                                            </div>
                                                        </div>
                                                    </div>
                                                </div>
                                            </div>
                                            <!-- Weitere Adressen -->
                                            <div id="toinsert"></div>
                                        </div>
                                    </div>

                                </section>


JS



[url=https://www.basicthinking.de/blog/2018/05/03/gif-erstellen/][/url]

Drucke diesen Beitrag

  in Dom eingefügter Code wird nicht auf Webseite richtig dargestellt
Geschrieben von: bernd - 21.09.2022, 21:25 - Forum: Javascript - Antworten (4)

Hallo,

ich baue mir gerade ein Chrome Add-On.

Bisher hat es auch halbwegs geklappt aber es scheitert gerade an etwas Trivialem und ich sehe meinen Fehler nicht.



Ich lasse mein Add-On auf einer Rouletteseite am Casinotisch laufen.



Jedes Mal wenn der drehen Knopf gedrückt wird, wird ein get request an den Server geschickt und eine response kommt zurück.

In der Response steht die erdrehte Zahl drin, die auch dann visuell dargestellt wird.



Jetzt ist mein Skript soweit dass es die Requests mitliest, eine bestimmte Art von Request näher betrachtet und aus deren Response Body die Gewinnzahl ausliest.

Basierend auf der Farbe der Gewinnzahl (null=grün, rot oder shcwarz die anderen Farben, siehe Tisch)

soll oben links ein Kästchen auf der Webseite gemalt werden mit Hintergrundfarbe=gezogene Farbe und, weils ohne nicht geht, einem weissen Buchstaben O drin.



Codemässig lasse ich da in jeder Runde (heißt bei jeder abgefangenen, zutreffenden Request)

ein neues div element mit einem p element drin zeichnen. (mir fiel keine billige einfache art, oben links ein farbiges kästchen zu zeichnen, ein)

Ist bereits ein solches element vorhanden, wird das alte gelöscht (per id eindeutig findbar) und ein neues gebaut und in die seite gepackt.



so weit so gut.

für eine rote gezogene Zahl funktioniert das auch, da wird schön ein rotes kästchen, mit weißem O drin und weißen Rändern gemalt.

Nur wenn eine grüne null oder eine schwarze zahl gezogen wird, wird gar nicht gemalt.

obwohl der code für die 3 Fälle praktisch identisch ist, es unterscheidet sich nur der verwendete rgb wert für die hintergrundfarbe. Undecided



Es ist auch nicht so dass nur einmalig was gezeichnet wird, wenn bspw. erst eine rote farbe gezogen wird, malt er was rotes.

dann 2 schwarze farben, malt er nichts (oder alles in schwarz, wer weiß. die webseite selbst ist ja schwarz)

kommt dann rot, dann malt er wieder das kästchen.



Also er reagiert schon jedes Mal auf die Daaten aus dem abgefangenen Request, nur für null und schwarze zahl malt er einfach nicht das, was er soll Undecided



Und ich weiß nicht warum.



Das hier ist das skript, das ich "injekte" (von seiten des chrome add-ons müsste alles funktionieren, es muss am in die dom reingepackten html code liegen):





Der interessante Teil ist zwischen den mit Sternen markierten Grenzen, ziemlich mittig:



Code:
(function(xhr) {

    var XHR = XMLHttpRequest.prototype;

    var open = XHR.open;
    var send = XHR.send;
    var setRequestHeader = XHR.setRequestHeader;

    XHR.open = function(method, url) {
        this._method = method;
        this._url = url;
        this._requestHeaders = {};
        this._startTime = (new Date()).toISOString();

        return open.apply(this, arguments);
    };

    XHR.setRequestHeader = function(header, value) {
        this._requestHeaders[header] = value;
        return setRequestHeader.apply(this, arguments);
    };

    XHR.send = function(postData) {

        this.addEventListener('load', function() {
            var endTime = (new Date()).toISOString();

            var myUrl = this._url ? this._url.toLowerCase() : this._url;
            if(myUrl) {

                if (postData) {
                    if (typeof postData === 'string') {
                        try {
                            // here you get the REQUEST HEADERS, in JSON format, so you can also use JSON.parse
                            this._requestHeaders = postData;   
                        } catch(err) {
                            console.log('Request Header JSON decode failed, transfer_encoding field could be base64');
                            console.log(err);
                        }
                    } else if (typeof postData === 'object' || typeof postData === 'array' || typeof postData === 'number' || typeof postData === 'boolean') {
                            // do something if you need
                    }
                }

                // here you get the RESPONSE HEADERS
                var responseHeaders = this.getAllResponseHeaders();

                                                console.log(this.responseType);
                if ( this.responseType != 'blob') {
                    // responseText is string or null
                    try {

                        // here you get RESPONSE TEXT (BODY), in JSON format, so you can use JSON.parse
                        var arr = this.response;

                        // printing url, request headers, response headers, response body, to console
                                                //console.log(" ");
                        //console.log(this._url);
                        //console.log(JSON-parse(this._requestHeaders));
                        //console.log(responseHeaders);
                                                
                                                
//*************************************************************************************************************************                                                
                                                if(arr.includes("gameServerVersion")){
                                                    



                                                    //console.log(arr);
                                                    var wintext=arr.match(/&winnumber=[0-9]+/g);
                                                    //console.log(wintext[0]);
                                                    let result = arr.match(/&winnumber=[0-9]+/)[0].substring(11, (arr.length-1));
                                                    console.log(result);

                                                    let rot=["1","3","5","7","9","12","14","16","18","19","21","23","25","27","30","32","34","36"];
                                                    
                                                    
                                                    const element = document.getElementById("insertedDiv1234");
                                                    if(element!=null){
                                                        element.remove();
                                                    }
                                                    
                                                    const div=document.createElement("div");
                                                    div.setAttribute("id","insertedDiv1234");
                                                    div.setAttribute("style","position:fixed; top: 0px; left: 0px; width:20px; height:20px;");
                                                    
                                                    
                                                    if(rot.includes(result)){div.innerHTML="<p style='border-width:1px; border-style:solid; border-color:white; padding: 1em; color:white; background-color:rgb(255, 0, 0);'>O</p>";}
                                                    else if(result.equals("0")){div.innerHTML="<p style='border-width:1px; border-style:solid; border-color:white; padding: 1em; color:white; background-color:rgb(0, 255, 0);'>O</p>";}
                                                    else{div.innerHTML="<p style='border-width:1px; border-style:solid; border-color:white; padding: 1em; color:white; background-color:rgb(0, 0, 0);'>O</p>";}
                                                    console.log(div);
                                                    document.body.appendChild(div);

                                                    console.log(result);                   
                                                }
/***************************************************************************************************************************************************                                                

                    } catch(err) {
                        //console.log("Error in responseType try catch");
                        //console.log(err);
                    }
                }

            }
        });

        return send.apply(this, arguments);
    };

})(XMLHttpRequest);

Drucke diesen Beitrag

  http requests und Popup Box bei Chrome Erweiterung?
Geschrieben von: bernd - 19.09.2022, 17:58 - Forum: Javascript - Keine Antworten

Hallo,
Ich habe ein größeres Vorhaben, das sich simpel zusammenfassen lässt:
Ich will mr eine Chrome Erweiterung bauen,
die bei einer ganz bestimmten Seite hingeht, die http requests und responses beobachtet und aus einer ganz bestimmten Response (deren request beim klicken eines Buttons abgeschickt wird) bestimmte Teile des Strings raussucht.

Bin da dank Leuten aus einer chrome "group" (warum können die kein normales Forum machen, wie bei Firefox auch?)
shcon so weit dass ich irgendwie in die Webseite ein Script injekte dass die http responses im auge behält und wnen meine gesuchte response kommt, mir die substrings daraus auf die konsole druckt.
So sehen aktuell die 3 Dateien aus:
(manifest.json, muss ja immer dabei sein; write.js, der in die Seite reingebrachte Code; und bg.js, das auf mysteriöse Weise den Code in die Seite bringt. Es funktioniert, also beschwer ich mich nicht :-))
manifest.json:

Code:
{
  "name": "Test3",
  "description": "blabla",
  "version": "1.0",
  "manifest_version": 3,
      "background": {"service_worker": "bg.js"},
  "permissions": ["scripting"],
  "host_permissions": ["<all_urls>"]


}

write.js:
Code:
(function(xhr) {

    var XHR = XMLHttpRequest.prototype;

    var open = XHR.open;
    var send = XHR.send;
    var setRequestHeader = XHR.setRequestHeader;

    XHR.open = function(method, url) {
        this._method = method;
        this._url = url;
        this._requestHeaders = {};
        this._startTime = (new Date()).toISOString();

        return open.apply(this, arguments);
    };

    XHR.setRequestHeader = function(header, value) {
        this._requestHeaders[header] = value;
        return setRequestHeader.apply(this, arguments);
    };

    XHR.send = function(postData) {

        this.addEventListener('load', function() {
            var endTime = (new Date()).toISOString();

            var myUrl = this._url ? this._url.toLowerCase() : this._url;
            if(myUrl) {

                if (postData) {
                    if (typeof postData === 'string') {
                        try {
                            // here you get the REQUEST HEADERS, in JSON format, so you can also use JSON.parse
                            this._requestHeaders = postData;   
                        } catch(err) {
                            console.log('Request Header JSON decode failed, transfer_encoding field could be base64');
                            console.log(err);
                        }
                    } else if (typeof postData === 'object' || typeof postData === 'array' || typeof postData === 'number' || typeof postData === 'boolean') {
                            // do something if you need
                    }
                }

                // here you get the RESPONSE HEADERS
                var responseHeaders = this.getAllResponseHeaders();

                                                console.log(this.responseType);
                if ( this.responseType != 'blob') {
                    // responseText is string or null
                    try {

                        // here you get RESPONSE TEXT (BODY), in JSON format, so you can use JSON.parse
                        var arr = this.response;

                        // printing url, request headers, response headers, response body, to console
                                                console.log(" ");
                        //console.log(this._url);
                        //console.log(JSON-parse(this._requestHeaders));
                        //console.log(responseHeaders);
                                                if(arr.includes("gameServerVersion")){
                                                    console.log(arr);
                                                    var wintext=arr.match(/&winnumber=[0-9]+/g);
                                                    console.log(wintext[0]);
                                                    let result = arr.match(/&winnumber=[0-9]+/)[0].substring(11, (arr.length-1));
                                                    console.log(result);                   
                                                }                                                

                    } catch(err) {
                        //console.log("Error in responseType try catch");
                        //console.log(err);
                    }
                }

            }
        });

        return send.apply(this, arguments);
    };

})(XMLHttpRequest);
bg.js:
Code:
chrome.runtime.onInstalled.addListener(async () => {
  const old = await chrome.scripting.getRegisteredContentScripts();
  if (old[0]) await chrome.scripting.unregisterContentScripts({ids: old.map(s => s.id)});
  await chrome.scripting.registerContentScripts([{
    id: 'write',
    js: ['write.js'],
    matches: ['<all_urls>'],
    runAt: 'document_start',
    world: 'MAIN',
  }]);
});


Jetzt abe ich es wie gesagt soweit dass ich in der write.js Datei den mittigen Part anpassen kann um mir Infos aus der http request oder der response auf die Konsole drucken zu lassen.

Ich habe wie gesagt nur wenig Ahnung was da passiert, der Code ist aus Internetstücken zusammengesetzt.

Wie kann ich es nun machen dass ich eine Art Popup/Overlay oder so mit dem gesuchten String auf der Seite anzeige?
Die DOM soll in dem Sinne nicht verändert werden weil ich unter Anderem auf manche Buttons klicke.
Wenn da irgendwo was eingefügt wird, sind die Koordibaten wieder ganz anders.

Ih denke und hoffe da eher darauf dass auf die sichtbare Webseite einfach so obenlinks ein kleines Fenster drübergelegt wird, vielleicht 1 cm hoch und 2 cm breit oder so, weißer hintergrund, schwarzer text.
Wo einfach, sobald die gesuchte request kommt, der text aus der response da rein geschrieben wird.

Falls von interesse ist wozu das sein soll Alles:
Geht um Roulette, will mir einen Bot bauen um Roulette zu spielen.
Wenn der dann auf den "Drehen" Button klickt, wird ja eine neue Zahl gezogen.
Hierbei geht eine http request an den server und eine response kommt zurück. In der Response  steht dann auch (in dem ellenlangen response-body-string) welche zahl gedreht wurde, das will ich auslesen.
Und wie gesagt in einem unauffälligen fenster an einer stelle, wo es den Spielverlauf nicht stört, anzeigen lassen.
könnte bspw. oben links in der ecke dann einfahc ein kleines feld mit "13" drin oder so sein.

der eigentliche roulettebot mache ich übrigens in java, werde dann mit farberkennung oder ocr oder so eben von der webseite "ablesen" was da in dem kästchen steht. ggbfls. statt die zahl in das feld zu schreiben, würde ich vielleciht auch einfach das feld in der farbe der gezogenen zahl anmalen. oder so, keien Ahnung.
Müsste erst mal wissen wie ich möglichst easy so ein Feld über die bestehende websitenfläche obendrauf male.

Drucke diesen Beitrag