Ich habe seit ein paar Stunden mit einem Problem zu kämpfen, und ich würde entweder Hilfe bei der Erreichung meines Ziels oder Bestätigung, dass was ich versuche zu tun ist in der Tat unmöglich .Gewählten Text mit Cross-Frame-Scripting
Ich habe eine Webanwendung, die den ausgewählten Text (document.getSelection()
) als Eingabe von einer beliebigen Webseite nimmt. Es wäre zwar möglich, ein Bookmarklet für ein solches Scripting zu verwenden, aber es ist am besten für den Endbenutzer, wenn ich dies mit einem Iframe erreichen kann.
Der Mutterrahmen ist meine Seite mit diesem Skript:
$('#frame').load(function()
{
// this event won't be triggered
$(window).mouseup(function(){
doStuff(window.getSelection());
});
// this will throw a security error
$(window.frames[0].document).mouseup(function(){
doStuff(window.frames[0].document.getSelection());
});
});
eine beliebige Stelle im untergeordneten Frame. Wenn das untergeordnete Dokument nicht von meiner Domäne stammt, ist der Zugriff aus Sicherheitsgründen von XSS verboten. Ich habe verschiedene Varianten und versuchte Hacks ausprobiert, einschließlich des Setzens des iframes src
auf meine Domain mit der Third-Party-URL als Argument und Weiterleitung auf die URL des Drittanbieters. In gewissem Sinne bin ich froh, dass es nicht funktioniert hat (denn wenn das der Fall wäre, hätte die XSS-Sicherheit noch einen langen Weg vor sich ...)
Eine weitere Option wäre das Herunterladen der Third-Party-Seite und Serving es ist von meiner Domain wie ein Proxy-Server, aber ich habe schon eine Reihe von Problemen mit relativen Pfaden zu Dateien, die manchmal leicht zu absolut, aber manchmal ein Narrsbotschaft (wie wenn die Dateien per Skript zugegriffen werden) sind .
Ich habe festgestellt, dass ich vielleicht nur Pech habe. Vielleicht eine wichtige Unterscheidung für meinen Fall ist, dass ich nur auf die .getSelection()
Methode für das Kind zugreifen möchte. Sie müssen nicht auf Cookies oder Tastenanschläge zugreifen oder mit dem DOM interagieren können. Vielleicht macht es keinen Unterschied, aber vielleicht tut es das auch.