tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
861
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    AktivArne AktivArne ist offline Rookie
    Registriert seit
    Sep 2007
    Beiträge
    5
    Hallo,
    Ich habe eine oder einige Fragen zu Frames, und Javascript.

    Mein Problem:
    Ich habe 2 Frames, einen oberen (eine Art Toolbar) und einen unteren.
    In dem unteren Befindet sich ein <div> Tag, mit der id="PhotoContrainer".In Diesem Div Tag befindet sich ein Bild. ( Mit <img src="....")
    Diesen DivTag mit seiner ID und seinem Bild möchte ich gern auslesen, und später Speichern. Doch leider scheitere ich.


    1. Frage:
    Ist das aus Sicherheitsgründen überhaupt möglich?

    Wenn ja , hier einer meiner Versuche.

    Mein Code:
    in index.html
    HTML-Code:
    <frameset rows="28,*" border="0" frameborder="0" framespacing="0">
    <frame name="toolbar" src="toolbar.htm" scrolling="no" marginheight="3" marginwidth="10">
    <frame name="Site" src="svz_site.htm">
    </frameset>
    in toolbar.htm
    HTML-Code:
    <body>
    <style type="text/css">
    <!--
    body {
     margin:0px;
     background:url(toolbar.png) repeat-x;
         }
    a:link {
     color:#000000;
     text-decoration:none;
           }
    a:visited {
     color:#000000;
     text-decoration:none;
              }
    a:active {
     color:#FFFFFF;
     text-decoration:none;
             }
    a:hover {
     color:#999999;
     text-decoration:none;
            }
    div.toolbar {
     margin-left:250px;
                }
    -->
    </style>
    <script type="text/javascript">
    <!--
    // Versuche pic mit Div Tag zufüllen.
    var pic = parent.Site.document.getElementById('PhotoContainer');
    // Versuch Source in picurl zufüllen.
    var picurl = pic.getElementsByTagName('img')[0]src);
    // Picurl wird übergeben
    function transportPicUrl(picurl) {
    location.href='http://localhost/svzpicloader/?dlpic='+encodeURIComponent(picurl);
    }
    //-->
    </script>
    </head><body>
    <div class="toolbar">| <a href="javascript:transportPicUrl()">Bild Speichern</a> |</div>
    </body>
    Hier wird die Variable nur in einem Link an eine andere Seite Weitergeleitet, welche einen Download startet. Aber das Funktioniert schon einwandfrei.

    in Site.htm
    HTML-Code:
    <!-- Ganz ganz Viel unwichtiger Code...-->
    <div id="PhotoContainer">
     <img src="http://www.google.de/intl/de_de/images/logo.gif"/>
    </div>
    Meine Versuche:
    1. Getestet ob das Script ohne Frames Funktioniert.
    2. Statt parent.Site.xy mal parent.frames[0].xy eingesetzt
    3. Rückgabe wert von pic ohne Frames. (Mir wird gesagt das es sich bei dem Element um ein Div Element handelt.)



    Script ohne Frames:
    Code :
    1
    2
    3
    4
    5
    
    var pic=document.getElementById('PhotoContainer');alert(pic);
        if(confirm('Mit einem Klick auf OK akzeptierst du, dass du ueber alle\nnoetigen Rechte zum Download des Bildes verfuegst!'))
       {
        if(!pic)alert('Du bist nicht auf einer  Bild Seite!');
        else location.href='http://localhost/picloader/?dlpic='+encodeURIComponent(pic.getElementsByTagName('img')[0]src);   }

    Script für die Browserzeile oder Booklet:

    Code :
    1
    
    javascript: var pic=document.getElementById('PhotoContainer');if(confirm('Mit einem Klick auf OK akzeptierst du, dass du ueber alle\nnoetigen Rechte zum Download des Bildes verfuegst!')){if(!pic)alert('Du bist nicht auf einer Bild Seite!'); else location.href='http://www.picloader/?dlpic='+encodeURIComponent(pic.getElementsByTagName('img')[0].src);}

    Da Semtliche Versuche mit den Frames scheiterten, habe ich mich gefragt ob es überhaupt vorgesehen ist? Also man könnte ja eigentlich somit jede Site modfizieren, oder sogar verschiedene Teile austauscht.

    Frage 2:
    Wenn es so nicht möglich ist, ist es überhaupt umsetztbar?
    Und vorallem wie? ( Denkanstoß)


    Hoffe ihr könnt mir weiterhelfen,
    Gruß Arne
     

  2. #2
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    du greifst in diesen zwei Zeilen
    Code :
    1
    2
    3
    4
    
    // Versuche pic mit Div Tag zufüllen.
    var pic = parent.Site.document.getElementById('PhotoContainer');
    // Versuch Source in picurl zufüllen.
    var picurl = pic.getElementsByTagName('img')[0].src;
    auf das Dokument und seine Methoden zu, während es noch nicht existiert.

    Versuch mal, alles mit in die Funktion zu packen.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    function transportPicUrl() {
      // Versuche pic mit Div Tag zufüllen.
      var pic = parent.Site.document.getElementById('PhotoContainer');
      // Versuch Source in picurl zufüllen.
      var picurl = pic.getElementsByTagName('img')[0].src;
     
      location.href='http://localhost/svzpicloader/?dlpic='+encodeURIComponent(picurl);
    }
    Vielleicht hilft dir das weiter.

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  3. #3
    AktivArne AktivArne ist offline Rookie
    Registriert seit
    Sep 2007
    Beiträge
    5
    Hallo,
    Vielen dank erstmal für die Antwort.
    Wenn ich jetzt versuche mir einer der beiden Variablen anzuzeigen, mit
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    function transportPicUrl() {
      // Versuche pic mit Div Tag zufüllen.
      var pic = parent.Svz_Site.document.getElementById('PhotoContainer');
      // Versuch Source in picurl zufüllen.
      //var picurl = pic.getElementsByTagName('img')[0].src;
      alert(pic);
    // Oder picurl
    }

    Kommt nichts, nicht mal ein Undefinded oder Null-
    Aber wenn ich jetzt zb. versuche auf den Unteren Frame zuzugreifen mit z.b.
    parent.frames[1].history.back(); oder parent.Site.history.back();
    zunktioniert das EInwandfrei.

    Ich bekomme blos mein Div Element nicht zufassen.
    Ich habe es schon einmal soweit gehabt das er mir Null ausgegeben hat.
    Wenn ich mir aber direkt über die Browserzeile die Variable pic ausgeben lasse, ohne frames, sagt er mir das es sich um ein HTML Div Object handelt.

    Blos verflixt, ich komm per frame irgedndwie nicht an diesen Div Container ran.

    Hat nochjemand eine Idee?
     

  4. #4
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    vielleicht liegt es am Name für den Frame - in deinem ersten Posting hiess der gesuchte Site, in deinem zweiten Script heiss er jedoch Svz_Site.

    Ansonsten funktioniert folgendes bei mir.

    index.html:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
    <html>
    <head>
    <title>www.tutorials.de</title>
    </head>
    <frameset rows="28,*" border="0" frameborder="0" framespacing="0">
    <frame name="toolbar" src="toolbar.html" scrolling="no" marginheight="3" marginwidth="10">
    <frame name="Site" src="svz_site.htm">
    </frameset>
    <noframes><body>
    </body></noframes>
    </html>
    toolbar.htm:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    
    <html>
    <head>
    <title>www.quaese.de</title>
    <meta name="author" content="Quaese">
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <style type="text/css">
    <!--
    body {
     margin:0px;
     background:url(toolbar.png) repeat-x;
         }
    a:link {
     color:#000000;
     text-decoration:none;
           }
    a:visited {
     color:#000000;
     text-decoration:none;
              }
    a:active {
     color:#FFFFFF;
     text-decoration:none;
             }
    a:hover {
     color:#999999;
     text-decoration:none;
            }
    div.toolbar {
     margin-left:250px;
                }
    -->
    </style>
    <script type="text/javascript">
    <!--
    // Picurl wird übergeben
    function transportPicUrl() {
      // Versuche pic mit Div Tag zufüllen.
      var pic = parent.Site.document.getElementById('PhotoContainer');
      // Versuch Source in picurl zufüllen.
      var picurl = pic.getElementsByTagName('img')[0].src;
      alert(picurl);
    }
    //-->
    </script>
    </head>
    <body>
    <div class="toolbar">| <a href="javascript: transportPicUrl()">Bild Speichern</a> |</div>
    </body>
    </html>
    svz_site.htm:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head>
    <title>www.tutorials.de</title>
    <meta name="author" content="Quaese">
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    <!-- Ganz ganz Viel unwichtiger Code...-->
    <div id="PhotoContainer">
     <img src="http://www.google.de/intl/de_de/images/logo.gif"/>
    </div>
    </body>
    </html>
    Voraussetzung für das Funktionieren ist jedoch die Voraussetzung, dass sich toolbar.htm und svz_site.htm unter der gleichen Domain befinden.

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

  5. #5
    AktivArne AktivArne ist offline Rookie
    Registriert seit
    Sep 2007
    Beiträge
    5
    Vielen dank, mein Problem ist gelöst.

    Doch gibt es auch eine möglichkeit wenn die Domain nicht gleich ist?
     

  6. #6
    Quaese Quaese ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Feb 2004
    Beiträge
    3.451
    Hi,

    mit JavaScript hast du keinen Zugriff auf fremde Domains und deren Dokumente. Das ist Teil des Sicherheitskonzepts, bezeichnet als Richtlinie gleicher Herkunft (same-origin policy). Mehr dazu findest du hier.

    Ciao
    Quaese
     
    Vielleicht muss man manchmal vom Weg abkommen, um nicht auf der Strecke zu bleiben!
    ----
    Der "Fortsetzungsroman" auf www.leuteforum.de

    New kind to realize large scalable projects with jQuery: jQuery SDK

Ähnliche Themen

  1. mit jQuery von einem Frame Elemente in anderen Frame beschreiben
    Von deluxeondecks im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 04.01.11, 14:16
  2. Anfänger: URL in einem anderen Frame öffnen
    Von KiteRider im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 24.11.07, 13:57
  3. Array von einem Frame zum anderen neu ordnen
    Von Leugim im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 15.06.07, 01:19
  4. aus einem Frame in nen anderen laden
    Von znysk im Forum Javascript & Ajax
    Antworten: 8
    Letzter Beitrag: 26.11.04, 02:11
  5. goto -> frame in einem anderen MC
    Von Zatic im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 02.10.01, 17:29