Я уже несколько часов борюсь с проблемой, и я был бы признателен за любую помощь в достижении моей цели или подтверждение того, что то, что я пытаюсь сделать, на самом деле невозможно ,Получение выделенного текста с использованием скриптов с поперечной рамкой
У меня есть webapp, который принимает выделенный текст (document.getSelection()
) в качестве входных данных с произвольной веб-страницы. Хотя можно было бы легко использовать букмарклет для подобных скриптов, лучше всего для конечного пользователя, если я смогу выполнить это с помощью iframe.
родительском фрейме мой сайт с помощью этого сценария:
$('#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());
});
});
Произвольный сайт находится в дочернем фрейме. Если дочерний документ из моего домена, доступ запрещен по соображениям безопасности XSS. Я попробовал несколько вариантов и попыток взлома, включая установку iframe src
в мой домен с третьим URL-адресом в качестве аргумента, а затем перенаправление на сторонний URL-адрес. В каком-то смысле я рад, что это не сработало (потому что если бы это произошло, то безопасность XSS все равно осталась бы длинной ...)
Другой вариант - загрузить стороннюю страницу и выполнить это из моего домена, как прокси-сервер, но я уже столкнулся с множеством проблем с относительными путями к файлам, которые иногда легко сделать абсолютными, но иногда ошибочными (например, когда файлы получают доступ через скрипт) ,
Я пришел к выводу, что мне просто не повезло. Возможно, важным отличием для моего случая является то, что я хочу только получить доступ к методу .getSelection()
для ребенка. Не нужно иметь доступ к файлам cookie или нажатиям клавиш или взаимодействовать с DOM. Может быть, это не имеет значения, но, возможно, так и есть.