私は数時間問題に取り組んできました。私の目標を達成するための助け、または私がやろうとしていることが実際には不可能であることを確認していただければ幸いです。
document.getSelection()
任意の Web ページから、選択したテキスト () を入力として受け取る webapp があります。ブックマークレットを使用してこのようなスクリプトをかなり簡単に実行することは可能ですが、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 セキュリティ上の理由からアクセスは禁止されています。src
サードパーティの URL を引数として iframe をドメインに設定し、サードパーティの URL にリダイレクトするなど、いくつかのバリエーションとハッキングを試みました。ある意味では、うまくいかなくてよかったです(もしうまくいったとしても、XSS
セキュリティにはまだ長い道のりがあるからです...)
別のオプションは、サードパーティのページをダウンロードして、プロキシサーバーのように私のドメインから提供することですが、ファイルへの相対パスに関する多くの問題に既に遭遇しました。 (スクリプト経由でファイルにアクセスする場合など)。
私は運が悪いだけかもしれないという結論に達しました。.getSelection()
おそらく、私の場合の重要な違いは、子のメソッドにのみアクセスしたいということです。Cookie やキーストロークにアクセスしたり、DOM と対話したりする必要はありません。多分それは違いを生まないかもしれませんが、多分そうです。