[HTML|JS] Selection aus einem iframe auslesen

M

Mr. Snoot

Gast
Hio,

ich - na ja, vielmehr "jemand" ;) sucht eine Möglichkeit aus einem, in eine Webseite integrierten iframe eine Textauswahl zu erfassen, um z.B. ein markiertes Wort in einem Lexikon suchen zu lassen.

Die Selection klappt soweit auf der Seite wunderbar, nur eben Markierungen im iframe werden nicht erkannt.

Hier mal der Quelltext:
HTML:
<a href="javascript: tagn_get" "class="subline" onClick="if (this.selection) {window.location.href = 'http://' + escape(selection);
return false;
}
else {
alert('Bitte markieren Sie zuerst einen Begriff...');

return false;
}"
onMouseOver="this.selection = getSelectionText();">
<img src="..."></a>

Wird im iframe ein Wort markiert kommt halt nur die Fehlermeldung wie im Code angegeben (Bitte markieren Sie ..).


Ich hoffe, dass das der relevante Teil ist. Recht viel mehr kann ich auch nicht ziegen, da es sich um eine interne Firmenwebseite handelt. Falls noch etwas wichtiges fehlt werd ich schaun, ob ich das noch posten kann.
 
Dir ist schon bewusst, dass ein iFrame auch nur ein Frame ist? Prinzipiell zeigt er also mal eine andere Seite an als das umgebende Fenster / der umgebende Frame.

Dein Quelltext ist also ein spärlicher Auszug. Vielleicht kannst du etwas mehr posten?
Ich sehe noch keinen richtigen Zusammenhang.
 
[UPS]Erazor schrieb:
Dir ist schon bewusst, dass ein iFrame auch nur ein Frame ist? Prinzipiell zeigt er also mal eine andere Seite an als das umgebende Fenster / der umgebende Frame.
Naja, im Grunde ist der iframe halt so eingebunden:
HTML:
<iframe src="http://" width="xx" height="yy" name="..."></iframe>
Und aus dieser im iframe eingebeteten Seite soll halt die Markierung ausgelesen werden.

Recht viel mehr gibt ist es ja nicht.
 
"Ich habe ein Problem."

"Welches denn?"

"Ich habe ein Problem!"
 
Ja was :D

Da gibt's ne Webseite auf der ein Link ist, über den man markierte Worte auslesen kann. Nun soll man aber auch markierte Worte aus einem in die Seite eingebeteten iframe auslesen können.

Oben ist der Code zum Auslesen, unten der Code wie der iframe eingebunden wird. Alles andere dazwischen ist doch eher uninteressant, oder?

Wie gesagt, wenn noch irgendwas relevantes fehlt: sagen! (was genau). Aber imo ist alles andere das ich im Quelltext gesehn habe nicht dafür zuständig.


Oder machen wir es mal so rum: (es existiert noch kein Quelltext ;))

Wie kann ich eine Markeriung aus einem, in eine Webseite integrierten iframe auslesen. Der Link, über den die Selection erfolgt, befindet sich dabei nicht im iframe, sondern in der Seite in die dieser eingebunden ist :p
 
Also mal generell: Kann ich mittels Javascript (o.ä.) eine Auswahl aus einem iframe auslesen, das in eine Seite eingebettet ist?
 
hmm..
ich hätte da noch eine andere, bessere, Parallele:

"Wie bekomme ich die Klobrille hoch?"
"Einfach aufklappen."
"Aber die Klobrille ist blau!"


Oder um mal Klartext zu reden: Erazor hat dir da oben einen schönen grossen Wegweiser "ZUR LÖSUNG >>" direkt vor der Nase in den Boden gerammt...
Und du rennst immer drumherum und fragst weiter die Leute nach dem Weg...
 
Zuletzt bearbeitet:
nur so nebenbei:

"class="subline"

da ist ein " zuviel
 
Um mal ausführlicher zu werden:
Ein iFrame bettet eine Seite zwar visuell, nicht aber inhaltlich auf einer anderen Seite ein.
Wenn du also auf der Seite, auf der auch das iFrame Tag auftaucht ein JavaScript hast, hat das immer noch keinen direkten Zugriff auf den Inhalt des iFrames.

Du musst eigentlich nur auf this.selection ODER iframe.selection hin prüfen. Wie genau du das anstellst weiß ich nicht, da iFrames eh Teufelszeug sind, sollte aber nicht anders sein wie bei einem normalen Frame.

Um nochmal konkreter zu werden:

Code:
<script>
function getGlobalSelection() {
    var sel1 = getSelection();
    var sel2 = document.getElementByTagName('iframe')[0].getSelection();
    if(sel1 != "")
        return sel1;
    if(sel2 != "")
        return sel2;
    
    return "";
}
</script>

...
onmouseover="this.selection = getGlobalSelection()"
...

Wie immer ungetestet, aber du solltest das Prinzip dadurch verstehen.
 
[UPS]Erazor schrieb:
Um mal ausführlicher zu werden:
Ein iFrame bettet eine Seite zwar visuell, nicht aber inhaltlich auf einer anderen Seite ein.
Wenn du also auf der Seite, auf der auch das iFrame Tag auftaucht ein JavaScript hast, hat das immer noch keinen direkten Zugriff auf den Inhalt des iFrames.
Ja, das ist mir schon klar - sogar vor deinem ersten Post; das ist ja das Problem an der Sache :p
Du musst eigentlich nur auf this.selection ODER iframe.selection hin prüfen. Wie genau du das anstellst weiß ich nicht, da iFrames eh Teufelszeug sind, sollte aber nicht anders sein wie bei einem normalen Frame.
Wie ich das anstell weiß ich auch nicht - aber du vielleicht? :D

Hab mal mit dem Quelltext da bissl rumprobiert aber nichts erfolgreiches zu Stande gebarcht.
 
Hab leider keine Zeit mich jetzt großartig damit auseinanderzusetzen (und ehrlichgesagt auch nicht groß die Böcke). Ich hab eigentlich noch nix großartig frameübergreifend mit Selections gemacht. Vielleicht kann aber noch jemand anders helfen, der in JS fitter ist als ich.
 
Wenn du also auf der Seite, auf der auch das iFrame Tag auftaucht ein JavaScript hast, hat das immer noch keinen direkten Zugriff auf den Inhalt des iFrames.

Das ist mal so etwas von falsch... ich kann sogar über Javascript mir Listener in dem i- oder sonstigem Frame registrieren... genauso kann ich das iFrame auslesen und verändern.

Ginge das nicht, gäbe es so schöne Richtexteditoren gar nicht.

Einziger Trick dabei ist, dass du den Listener erst registrierst wenn das Iframe bereits fertig geladen ist... das geht mit onload

in dem onload-Event registriest du dann den onmouclick-Event oder was auch immer um dann über frames['framename'].getSelection() [im IE gehts etwas anders] den Text auslesen zu können.



Wie gesagt, das wirst du ja schon kennen, bzw sehen wie es davor gemacht wurde. Einziger Trick, ist warten bis das Iframe geladen ist, dann kannst du es auch wörterweise auslesen, verändern... sogar in einen Editiermodus bringen mit frames['framename'].content.designmode="on"


Ihr würdet euch wundern was alles mit Javascript geht! Ohne Witz so leute gehen mir echt auf den Sack die versuchen Leuten mitzuteilen dass das Problem nicht lösbar ist nur weil sie zu Dumm sind... und wenn diese dann nicht aufgeben wollen, anfangen agressiv zu werden...
 
Zurück
Oben