[JS] Iframe-Eigenschaften ändern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JS] Iframe-Eigenschaften ändern

    Hallo.

    Wir versuchen im Microsoft Dynamics CRM via Javascript ein Bild
    einzublenden, welches durch den eigegebenen bzw. gespeicherten Namen angezeigt wird.

    Wir haben ein IFrame hinzugefügt in dass das Bild geladen wird.
    Nun schaffen wir es aber nicht, den Innenabstand und etweige andere
    Eigenschaften zu ändern.

    Bislang vorhandene und funktionierende Funktionen sind:
    HTML-Code:
    document.all.IFRAME_foto.style.borderWidth= '0';
    document.all.IFRAME_foto.style.height= "100";
    document.all.IFRAME_foto.style.width="200";
    
    document.all.IFRAME_foto.src = "/ISV/images/accounts/" + document.all.firstname.DataValue + "." + document.all.lastname.DataValue + ".jpg";
    Nicht funktionieren tut jedoch die funktion zum abschalten der Scrollbalken oder den Innenabstand auf 0 zu setzen.
    HTML-Code:
    document.all.IFRAME_foto.style.margin="0";
    document.all.IFRAME_foto.style.padding="0";
    funktionieren nicht.

    Kann jemand helfen?
    Danke

  • #2
    Hallo,

    die height und width Angaben können so nicht funktionieren, dort fehlt die Einheit (vermutlich "px"). Zum Thema padding und margin ist zu sagen, dass das nicht zwangsläufig (sogar unwahscheinlich) vom IFrame selbst kommen muss, sondern viel eher von dessen body-Element (ein IFrame ist ja eigentlich ein Browserfenster im Browserfenster). Dazu muss man wissen, dass non-HTML-Content in einem IFrame durch den Browser automatisch in ein Minimaldokument gewrappt wird, also das Bild nicht als Bild im IFrame steckt, sondern eher als
    HTML-Code:
    <html>
    <head></head>
    <body><img src="..." ></body>
    </html>
    Dadurch kommen dann auch Standardmargins für das body-Element ins Spiel, die ggf. angepasst werden müssen.

    Generell rate ich aber dazu, das mit CSS zu lösen und nicht jedes DOMElement einzeln mit JS zu stylen.

    Was ich aber generell nicht verstehe ist, warum man ein Bild in einen IFrame packt, statt es einfach mit dem img-Element einzubinden?

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Danke erstmal für die ausführliche Erläuterung!

      Wir wollten zuerst einfach in die WebSite per JS ein Bild einbinden mit write.
      Doch dann sieht man nurnoch das Bild auf einer Blanken Seite.
      Alles andere wird dadurch überschrieben.

      Gibt es eine Möglichkeit,
      z.B. beim OnLoad an einer bestimmten Stelle ein img "hinzu"zufügen,
      sodass nicht alles gleich verschwindet?
      Dazu müsste man ja auchnoch sagen können, wo genau angesetzt werden soll.

      Kommentar


      • #4
        Man kann onload etwas hinzufügen, man braucht nur eine Referenz auf ein benachbartes Element. Die kann man mit document.getElementById oder document.getElementsByTagName holen.

        Alles weitere lässt sich mit den DOM-Methoden realisieren. Heutzutage noch mit der document.write-Keule loszuziehen halte ich für unzweckmäßig.

        Bei SELFHTML: JavaScript / Objektreferenz / node findet man einen guten Überblick über das nötige Handwerkszeug.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Das heißt, ich suche mit GetElementId ein bestimmtes Feld o.ä. und kann vor diesem Element dann ein img erzeugen, richtig?

          Kommentar


          • #6
            Fast, es heißt getElementById Für den zweiten Schritt eignet sich insertBefore. Da ist jetzt aber trotzdem erstmal etwas Selbststudium zum Thema DOM-Manipulation angesagt.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              Zitat von AmicaNoctis Beitrag anzeigen
              Fast, es heißt getElementById Für den zweiten Schritt eignet sich insertBefore. Da ist jetzt aber trotzdem erstmal etwas Selbststudium zum Thema DOM-Manipulation angesagt.
              Danke.
              Bei meinen ersten Versuchen eben, habe ich eine Fehlermeldung bekommen.
              HTML-Code:
              There was an error with this felsd's custimized event.
              Field:windows
              Event:onload
              Error:Object doesn't support this property or method

              HTML-Code:
              var NewElement= document.createElement("b");
              var NewElementText= document.createTextNode("TEST");
              NewElement.appendChild(NewElementText);
              
              document.getElementByName("subject").insertBefore(NewElement, document.getElementByName("firstname"));
              Kann es daran liegen, das beide Elemente Eingabefelder sind?
              MicrosoftCRM lässt keinen Quelltext zu und funktioniert nur im IE.

              Kommentar


              • #8
                Es gibt kein windows.onload, nur window.onload
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  Zitat von AmicaNoctis Beitrag anzeigen
                  Es gibt kein windows.onload, nur window.onload
                  Ich habe es abgetippt und dabei das 's' unabsichtlich hinzugefügt.

                  Ich bekomme den Fehler eines ungültigen Arguments.

                  HTML-Code:
                  var NewElement= document.createElement("b");
                  var NewElementText= document.createTextNode("TEST");
                  NewElement.appendChild(NewElementText);
                  
                  document.getElementsByName("subject")[0].insertBefore(NewElement, document.getElementsByName("firstname")[0]);

                  Kommentar


                  • #10
                    Ohne die Seite zu kennen, kann man nicht wirklich viel dazu sagen. Vielleicht gibt es das gesuchte Element ja nicht oder der Name ist falsch. Ich würde da erstmal exzessiv jeden Schritt einzeln tun und mit alert prüfen, ob es geklappt hat (z. B. Element suchen und in Variable speichern, dann Variable prüfen und im Erfolgfall erst verwursten). Wenn du einen Debugger hast (IE8 eingebaut, für Firefox das Firebug-Add-On), erleichtert das die Sache natürlich enorm.
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      Zitat von AmicaNoctis Beitrag anzeigen
                      Ohne die Seite zu kennen, kann man nicht wirklich viel dazu sagen. Vielleicht gibt es das gesuchte Element ja nicht oder der Name ist falsch. Ich würde da erstmal exzessiv jeden Schritt einzeln tun und mit alert prüfen, ob es geklappt hat (z. B. Element suchen und in Variable speichern, dann Variable prüfen und im Erfolgfall erst verwursten). Wenn du einen Debugger hast (IE8 eingebaut, für Firefox das Firebug-Add-On), erleichtert das die Sache natürlich enorm.
                      Ich habe es überprüft und beide objecte "subject" und "firstname" existieren.
                      Wo könnte der Fehler "Invalid Argument" sich verstecken?
                      Ich habe auch keine Syntaxprüfmöglichkeit.

                      Wie gesagt, beide Objekte sind Textboxen, was jedoch nicht stören sollte, oder..

                      Kommentar


                      • #12
                        Zitat von phpMorpheus2 Beitrag anzeigen
                        Wo könnte der Fehler "Invalid Argument" sich verstecken?
                        Ich hab doch schon erwähnt, dass ich dir nicht helfen kann, deine Fehler zu finden, wenn ich nicht einmal die Seite kenne.

                        Wenn du eine Zeilennummer zu der Fehlermeldung bekommst, teile die Operationen in einzelne Statements auf, dann hast du pro Zeile nur einen Fehlerkandidaten und über die Zeilennr. aus der Fehlermeldung weißt du dann, wo es kracht. Das sind Debugginggrundlagen!

                        Wieso hast du keine Syntaxprüfmöglichkeit? Die hast du immer. Wenn du mit einem CMS arbeitest, siehst du dir halt den Quelltext der Seite an, die rauskommt. Eventuell hilft es auch, das erstmal mit einer eigenständigen einfachen Testseite zu üben, bis man weiß, wie das alles funktioniert.
                        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                        Super, danke!
                        [/COLOR]

                        Kommentar


                        • #13
                          Mal eine ganz dumme Frage. Du bindest in dem Iframe doch sicher eine externe Seite ein. Und dann greift die Same Origin Policy

                          Peter
                          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                          Meine Seite

                          Kommentar


                          • #14
                            Hallo Peter,

                            von dem IFrame sind wir doch schon weg. Er will doch derzeit nur ein b-Element mit einem "TEST"-Text einfügen.

                            Gruß,

                            Amica
                            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                            Super, danke!
                            [/COLOR]

                            Kommentar


                            • #15
                              Zitat von phpMorpheus2 Beitrag anzeigen
                              Kann es daran liegen, das beide Elemente Eingabefelder sind?
                              Welche beiden?
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X