none
Windows Phone 8 Webbrowser Elemente verstecken RRS feed

  • Frage

  • Hallo,

    ich möchte in meinem App bestimmte Elemente verstecken/hiden lassen. Nach kurzem surfe habe ich unter diesem Link,

    Hide Elements

    diesen Code gefunden:

    var backButton = document.getElementsByTagName("header")[0].firstChild;
    
    // check if it looks like a back button
    if(backButton && backButton.innerText == "Back") {
      // it looks like a back button, remove it
      document.getElementsByTagName("header")[0].removeChild[backButton];
    }

    Wenn man auf den Back Button drückt soll der header (HTML Heade) ge hidet werden. Nur mir wird ein Fehler bei
    document

    document.getElementsByTagName("header")[0].removeChild[backButton];

    angezeigt.

    Es heißt, beim ersten, das documents im Kontext nicht vorhanden sei. Nur ich weiß nicht als was ich es deklarieren muss.

    Beim zweien Fehler, vermute ich einen Folge fehler.

    Wenn ihr mir helfen könnt, hätte ich auch noch eine Frage. Ist es Möglich nicht nur den Header sondern auch ein div element mit einer bestimmeen Klasse/Id zu verstecken/hiden?

    LG Elias


    Grad Umrechner: Grad Umrechner EselsbrückenBETA: Eselsbrücken


    Freitag, 24. Januar 2014 22:36

Antworten

  • Hallo Elias,

    wenn die Webseite, um die es geht, jQuery integriert hat, wäre das recht einfach. In dem Fall bräuchtest Du lediglich den Aufruf:

    $( "<Selektor>" ).hide()

    aufzurufen. Für DIV Container mit der CSS Klasse "test" bspw. so:

    $( "div.Test" ).hide();

    Für weitere Details schau mal hier:

      http://api.jquery.com/hide/

      http://api.jquery.com/category/selectors/

    Das kannst du dann auch ohne spezielle Funktion im HTML Code bzw. im JavaScript Code machen, wichtig ist nur, dass die Webseite an sich jQuery verwendet.

    Bzgl. des Aufrufs an sich wirst Du um die Übergabe als String in InvokeScript nicht drumrum kommen. Das steht aber eigentlich auch so in dem verlinkten Artikel. Den Code 1:1 kopieren und ausführen kann hier nicht funktionieren.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert ADL Solutions Montag, 27. Januar 2014 14:37
    Samstag, 25. Januar 2014 09:55
    Moderator

Alle Antworten

  • Hi,

    so ganz grundsätzlich (weil sich das für mich so gelesen hat als ob Du header, head, ... vermischst): Du kannst den <head> Tag nicht einfach "verstecken" und selbst wenn man es könnte, was sollte das bringen? Dort sind keinerlei sichtbare Elemente untergebracht, sonder wichtige technische Informationen bspw. Referenzen zu Stylesheets, JavaScript Dateien, usw.

    Wenn Du <header> Element meinst, würde der Code vom Grundsatz her passen, allerdings musst Du in deinem HTML Code dann auch mind. einen solchen Tag haben.

    Da Du den Aufruf des JavaScript Codes ja per InvokeScript durchführen willst/sollst, zeig mal bitte den vollständigen Code, also die Zeilen, in denen Du den JavaScript Code erzeugst und die, in denen Du das dann per InvokeScript übergibst.

    Generell würde ich hier aus Einfachheitsgründen eine JavaScript Funktion direkt in der HTML Seite hinterlegen, dann musst diese nur mit einem kurzen Befehl aufrufen und nicht den gesamten Code erst als String aufbauen und dann übergeben.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 25. Januar 2014 08:48
    Moderator
  • Hallo,

    ersteinmal danke für deine antwort.

    Einen weiterführenden Code habe ich noch nicht.

    Da ich den Code 1 zu 1 von der Webseite in mein Programm kopiert habe. Ist mit das mit header gar nicht aufgefallen.

    Ich habe mir gerade noch mal den HTML-Code von der Website angeschaut:

    http://m.iastate.edu/laundry/

    Dort gibt es Elemente mit header.

    Bei deiner Lösung gibt es das Problem, dass ich viele img links fixen muss. Das ist teilweise sehr umständlich und deshalb suche ich nach einer Methode, die quasi bestimmte HTML Elemente (wie ein div element mit der class" test") verboten oder versteckt werden. Durch das als String speichern und dann wieder laden verbraucht auch etwas Zeit.

    LG Elias


    Grad Umrechner: http://www.windowsphone.com/de-de/store/app/grad-umrechner/59165d3f-6219-4bda-84c5-e55a166f5f3d EselsbrückenBETA: http://www.windowsphone.com/de-de/store/app/eselsbr%C3%BCcken-beta/f9245a85-6953-40c2-9311-0e1bba6934cf

    Samstag, 25. Januar 2014 09:08
  • Hallo Elias,

    wenn die Webseite, um die es geht, jQuery integriert hat, wäre das recht einfach. In dem Fall bräuchtest Du lediglich den Aufruf:

    $( "<Selektor>" ).hide()

    aufzurufen. Für DIV Container mit der CSS Klasse "test" bspw. so:

    $( "div.Test" ).hide();

    Für weitere Details schau mal hier:

      http://api.jquery.com/hide/

      http://api.jquery.com/category/selectors/

    Das kannst du dann auch ohne spezielle Funktion im HTML Code bzw. im JavaScript Code machen, wichtig ist nur, dass die Webseite an sich jQuery verwendet.

    Bzgl. des Aufrufs an sich wirst Du um die Übergabe als String in InvokeScript nicht drumrum kommen. Das steht aber eigentlich auch so in dem verlinkten Artikel. Den Code 1:1 kopieren und ausführen kann hier nicht funktionieren.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert ADL Solutions Montag, 27. Januar 2014 14:37
    Samstag, 25. Januar 2014 09:55
    Moderator
  • Hallo,

    funktioniert super, aber leider nur wenn ich eine bestimmte klasse benutze. Jedoch wenn ich alle img Tags hiden will stützt es ab.

    LG Elias


    Grad Umrechner: http://www.windowsphone.com/de-de/store/app/grad-umrechner/59165d3f-6219-4bda-84c5-e55a166f5f3d EselsbrückenBETA: http://www.windowsphone.com/de-de/store/app/eselsbr%C3%BCcken-beta/f9245a85-6953-40c2-9311-0e1bba6934cf

    Samstag, 25. Januar 2014 12:50
  • Hallo Elias,

    die Fehlermeldung (genau und vollständig) solltest Du immer posten. Denn "stürzt es ab" ist keine Beschreibung, mit der man hier auch nur irgendetwas anfangen kann.

    $( "img" ).hide();

    Das wäre der passende Aufruf, um alle <img ... /> Tags zu verstecken.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Samstag, 25. Januar 2014 13:16
    Moderator
  • Hallo Stefan,

    Dieser Fehler wird angezeigt.

    In System.SystemException ist eine Ausnahme vom Typ "Microsoft.Phone.Interop.ni.dll" aufgetreten, doch wurde diese im Benutzercode nicht verarbeitet.

    Das ist der benutze Code

    webbrowsermain.InvokeScript("eval", "$( \"img\" ).hide();");

    LG Elias


    Grad Umrechner: http://www.windowsphone.com/de-de/store/app/grad-umrechner/59165d3f-6219-4bda-84c5-e55a166f5f3d EselsbrückenBETA: http://www.windowsphone.com/de-de/store/app/eselsbr%C3%BCcken-beta/f9245a85-6953-40c2-9311-0e1bba6934cf

    Samstag, 25. Januar 2014 13:29