あるタブで開いたページからデータを取得し、別のブラウザ タブで開いた別のページのテキスト領域に貼り付けたいと考えています。Javascript と Greasemonkey でこれを行うにはどうすればよいですか?
2 に答える
- スクリプトが両方のページでアクティブになるように、メタデータブロックに両方のドメインを設定します
- 現在表示しているページを検出できる、両方のWebサイトで一意の要素を見つけます。
- テーブルのあるページを表示している場合は、データを取得し
GM_setValue
てストアに配置します。必要に応じて、を使用して次のWebサイトを開きGM_openInTab
ます。 - 次のWebサイトが検出された場合は、で保存された値を取得し
GM_getValue
て、テキストエリアに貼り付けます。
テーブルページの後にtextarea-pageをロードする必要があるとしても、Greasemonkeyに対してこれほど難しいことではありません。
例
// @include http://website1.com/*
// @include http://website2.com/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js
$(document).ready(function() {
if( $("#divfromsite1").length )
{
GM_setValue("pastetext", $("#gettable").html() );
GM_openInTab("http://website2.com/");
}
else
{
$("#pastetextarea").val( GM_getValue("pastetext","") );
}
});
これを行うのは難しいです。それは不可能ではありませんが、実際には非常に困難です。
クロス ドキュメント メッセージングは、JavaScript を使用してあるページから別のページにメッセージを渡す方法です。このための最初の前提条件は、文書の出所が同じでなければならないということです。つまり、同じドメインの同じポートから送信され、同じプロトコルを共有する必要があります。うまく機能するのは、あるページが別のページにネストされている場合ですiframe
。このような場合は、次のことができます。
window
ネストされたページのオブジェクトを取得し、イベント リスナーをイベントに追加しreceiveMessage
ます。window[name].postMessage(msg, url)
他のウィンドウにメッセージを送信するために使用します。data
送信した情報を含むメッセージ イベントのプロパティを取得します。
あなたのケースを難しくしているのは、タブを越えてコミュニケーションしたいということです。タブ間で XDM を実行した経験はありませんが、複数のタブでアプリケーションを実行し、相互にやり取りする必要がある場合は、アプリケーションの設計を確認する必要があると個人的には考えています... ユーザーは気に入らないかもしれませんブラウザで何かを変更すると、おそらくすぐに見ることができず、理解できなくなります。
とにかく、これを先に進めたい場合は、さまざまなブラウザーがどのようにタブにアクセスできるかを確認する必要があります。Firefox の場合は、この投稿Get window object from tabから開始することをお勧めします。Chrome の場合は、ここから開始することをお勧めします。.
質問が編集され、Greasemonkey の使用が追加されたことを考えると、これはあなたのニーズを満たす場合と満たさない場合があります。XDM を使用した解決策についてサポートが必要な場合は、喜んでお手伝いします。