Seite 1 von 2 12 Letzte
  1. #1

    Registriert seit
    03.12.2012
    Beiträge
    29
    Thanked 1 Time in 1 Post

    Standard Webbrowser inject Javascript in html loaded js

    Hallo,

    ich habe derzeit ein folgendes Problem und zwar:

    Derzeit wird im ganzen Document die funktionen "onunload" "open" usw:

    Code:
     for (int C = 0; C < webBrowser1.Document.GetElementsByTagName("head").Count; C++)
                {
                    HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[C];
                    HtmlElement scriptEl = webBrowser1.Document.CreateElement("script");
                    IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
                    string alertBlocker = "window.alert = function () { }; window.print = function () { }; window.open = function () { }; window.onunload = function () { }; window.onbeforeunload = function() { };";
                    element.text = alertBlocker;
                    head.AppendChild(scriptEl);
                }
    Nun ist das Problem, dass die Seite z.B über ein externes Javascript diese Funktion läd und es dort nicht Injected wird:

    Code:
    <script src="/js/jquery.js"></script>
    <- dort steht z.B die "onunload" Funktion und wird nicht rein injected.
    Nun soll aber das Programm alle .js im Document suchen und injecten.

    greets,
    Bl1zz4rD

  2. #2

    Registriert seit
    18.03.2013
    Beiträge
    481
    Thanked 264 Times in 168 Posts

    Standard AW: Webbrowser inject Javascript in html loaded js

    Alle JavaScript-Dokumente extra öffnen lassen und dann die Funktionen injecten. Oder was genau meinst du?



    [www.piratenpartei.de]
    "Krieg ist Frieden; Freiheit ist Sklaverei; Unwissenheit ist Stärke"

  3. #3

    Registriert seit
    03.12.2012
    Beiträge
    29
    Thanked 1 Time in 1 Post

    Standard AW: Webbrowser inject Javascript in html loaded js

    Nicht öffnen, die sollen direkt injected werden, nun man kann es auch als öffnen bezeichnen.

  4. #4
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.210
    Thanked 9.132 Times in 3.006 Posts
    Blog Entries
    5

    Standard AW: Webbrowser inject Javascript in html loaded js

    Direkt mit dem WebBrowser-Control von .NET wird das nicht möglich sein. Du müsstest die Definition deiner onload-Funktion injecten, bevor die externen JS-Dateien geladen und durch den Parser gejagt werden. Und dafür fehlt dir wohl das entsprechende Event, zumindest ist mir beim .NET Control keines bekannt.
    Ich würde die Seite außerhalb des WB-Controls laden, die externen JS-Dateien einzeln laden, deine Funktion injecten und dann an der jeweiligen Stelle einfach als Inline-JS wieder einfügen, sofern da bezüglich caching nichts dagegen spricht. Weiß ja nicht was du konkret vor hast.
    xOneDirectionx meinte denke ich dasselbe.

    Du könntest dich natürlich auch über alternative WB-Controls informieren, zb geckofx auf Basis von Firefox. Vielleicht findest du da entsprechende Events für dein Vorhaben. Wäre generell zu empfehlen da das .NET Control auf einer uralten IE-Version basiert (selbst im Aktuellen 4.5er ist das noch der IE 7 oder 8). Das kann natürlich zu Problemen führen, da die alten IE Versionen dafür bekannt sind in vielen Fällen nur mit Extrawurst so zu funktionieren wie sie das sollen. Aus dem Grund machen sich viele Webmaster gar nicht die Mühe, alle Probleme die es mit alten IE Versionen gibt zu fixxen. Hier in UH wird generell nix für den IE optimiert. Höchstens für den IE10, alles drunter ist eine Beleidigung für den Betriff 'Browser' xD


  5. The Following User Says Thank You to DMW007 For This Useful Post:

    Bl1zz4rD (14.06.2013)

  6. #5

    Registriert seit
    03.12.2012
    Beiträge
    29
    Thanked 1 Time in 1 Post

    Standard AW: Webbrowser inject Javascript in html loaded js

    Ok, danke schon mal, vll ist die Methode die ich hier versuche auch viel zu hoch fuer mein Vorhaben.

    Wenn ich auf eine bestimmte Seite navigiere und dann von dieser z.B auf Google.de gehen moechte, ist das Problem, dass der User dann diese laestige messagebox sieht und solabge die nicht angeklickt wurde mit "Seite verlassen" wird die Seite nicht verlassen und nach ner Zeit haengt sich auch das programm dann auf wegen Multithreading.

    Und wenn ich ueber registry einfach ganz js deaktiviere funktioniert die Seite nicht mehr so, wie sie soll

    greets,
    Bl1zz4rD
    Geändert von Bl1zz4rD (14.06.2013 um 17:07 Uhr)

  7. #6
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.210
    Thanked 9.132 Times in 3.006 Posts
    Blog Entries
    5

    Standard AW: Webbrowser inject Javascript in html loaded js

    Ich seh grad es gibt sogar ne Funktion dafür, brauchst also gar nicht manuell am Quelltext rumfummeln:


    string alertBlocker = "window.print = function emptyMethod() { }; window.alert = function emptyMethod() { }; window.open = function emptyMethod() { };";
    this.Document.InvokeScript("execScript", new Object[] { alertBlocker, "JavaScript" });


    Probier das mal, soll bei anderen funktioniert haben. Weiß jetzt aber nicht ob die mit inline-JS oder auch mit externem JS gearbeitet haben.

    Was willst du denn konkret realisieren? Evtl findet sich da auch ne sauberere Lösung. Gibt zb auch die Möglichkeit die Anfragen manuell zu senden. Dann hast du mit JS keine Probleme (sofern du es nicht zwingend geparst benötigst) weil das weder automatisch geladen noch geparst wird.

    Zitat Zitat von Bl1zz4rD Beitrag anzeigen
    Wenn ich auf eine bestimmte Seite navigiere und dann von dieser z.B auf Google.de gehen moechte, ist das Problem, dass der User dann diese laestige messagebox sieht und solabge die nicht angeklickt wurde mit "Seite verlassen" wird die Seite nicht verlassen und nach ner Zeit haengt sich auch das programm dann auf wegen Multithreading.
    Die Logik sollte generell in einem von der GUI getrennten Thread ausgelagert werden. Erst Recht wenn man in der Logik Vorgänge ausführen will, die den Thread schon mal für längere Zeit blockieren können. Du musst bedenken, dass da im Hintergrund ein kompletter Browser läuft, der Ressourcen herunterläd, JS parst etc.


  8. #7

    Registriert seit
    03.12.2012
    Beiträge
    29
    Thanked 1 Time in 1 Post

    Standard AW: Webbrowser inject Javascript in html loaded js

    Diese funktion die du oben genannt hast, benutze ich neben dem da oben auch schon und es finktioniert nicht, wenn ich am Sonntag wieder zu Hause bin, kann ich gerne eine von solcher Seite mal posten.

  9. #8

    Registriert seit
    03.12.2012
    Beiträge
    29
    Thanked 1 Time in 1 Post

    Standard AW: Webbrowser inject Javascript in html loaded js

    satoshicircle.com
    Das wäre so eine Seite, bei der es nicht funktioniert, die Funktion steht in der jQuery.js

    Bei -> Head -> <script src="/js/jquery.js"></script>

  10. #9
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.210
    Thanked 9.132 Times in 3.006 Posts
    Blog Entries
    5

    Standard AW: Webbrowser inject Javascript in html loaded js

    Das ist auch kein klassischer Aufruf der alert-Funktion sondern ein Eventhandler:


    $(window).on("beforeunload", function () {
    return "Make sure you save your URL in order to access your account at a later time."
    })

    Eine Möglichkeit wäre

    $(window) = null;

    Ob das im Bezug auf das restliche JS so sinnvoll ist sei aber mal dahingestellt.
    Bevor man da weiterguckt wärs aber sinnvoll zu wissen was du überhaupt vor hast. Ich vermute mal du willst da bei irgendwelchen Spielen automatisch setzen oder etwas in der Art. Da wäre es wohl sinnvoller die HTTP-Anfragen selbst zu senden. Wie bereits gesagt hast du dann mit JS auch keine Probleme weil du keine JS Engine hast. Das kann aber natürlich auch ein Nachteil sein wenn du darauf angewiesen bist weil wesentliche Funktionen über JS laufen und der Aufwand zu hoch wäre die selbst zu schreiben. Wobei ich das bei so einer Spielothek-Seite eher nicht vermute, die werden das über HTTP-Abfragen absenden. Vielleicht noch über Ajax, aber das spielt ja keine Rolle.


  11. The Following User Says Thank You to DMW007 For This Useful Post:

    Bl1zz4rD (16.06.2013)

  12. #10

    Registriert seit
    03.12.2012
    Beiträge
    29
    Thanked 1 Time in 1 Post

    Standard AW: Webbrowser inject Javascript in html loaded js

    Zitat Zitat von DMW007 Beitrag anzeigen
    Das ist auch kein klassischer Aufruf der alert-Funktion sondern ein Eventhandler:


    $(window).on("beforeunload", function () {
    return "Make sure you save your URL in order to access your account at a later time."
    })

    Eine Möglichkeit wäre

    $(window) = null;

    Ob das im Bezug auf das restliche JS so sinnvoll ist sei aber mal dahingestellt.
    Bevor man da weiterguckt wärs aber sinnvoll zu wissen was du überhaupt vor hast. Ich vermute mal du willst da bei irgendwelchen Spielen automatisch setzen oder etwas in der Art. Da wäre es wohl sinnvoller die HTTP-Anfragen selbst zu senden. Wie bereits gesagt hast du dann mit JS auch keine Probleme weil du keine JS Engine hast. Das kann aber natürlich auch ein Nachteil sein wenn du darauf angewiesen bist weil wesentliche Funktionen über JS laufen und der Aufwand zu hoch wäre die selbst zu schreiben. Wobei ich das bei so einer Spielothek-Seite eher nicht vermute, die werden das über HTTP-Abfragen absenden. Vielleicht noch über Ajax, aber das spielt ja keine Rolle.
    Hab das so mal versucht, ging nicht, aber nein es muss über den Browser laufen und JS muss laufen.

    greets,
    Bl1zz4rD

Seite 1 von 2 12 Letzte

Ähnliche Themen

  1. C# Webbrowser Control eigener Browser
    Von Sido im Forum .Net
    Antworten: 1
    Letzter Beitrag: 22.11.2013, 23:35
  2. C# WebBrowser Control DropDownMenü
    Von RaidPower im Forum .Net
    Antworten: 4
    Letzter Beitrag: 27.09.2013, 20:04
  3. Eigenen Webbrowser erstellen
    Von Plaxo im Forum Hochsprachen
    Antworten: 5
    Letzter Beitrag: 26.04.2013, 17:29
  4. C# webBrowser dropdown select
    Von Bl1zz4rD im Forum .Net
    Antworten: 2
    Letzter Beitrag: 05.04.2013, 12:08
  5. Antworten: 0
    Letzter Beitrag: 14.10.2012, 20:07
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.