3

あるタブで開いたページからデータを取得し、別のブラウザ タブで開いた別のページのテキスト領域に貼り付けたいと考えています。Javascript と Greasemonkey でこれを行うにはどうすればよいですか?

4

2 に答える 2

8
  1. スクリプトが両方のページでアクティブになるように、メタデータブロックに両方のドメインを設定します
  2. 現在表示しているページを検出できる、両方のWebサイトで一意の要素を見つけます。
  3. テーブルのあるページを表示している場合は、データを取得しGM_setValueてストアに配置します。必要に応じて、を使用して次のWebサイトを開きGM_openInTabます。
  4. 次の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","") );
    }
});
于 2012-12-14T08:44:14.247 に答える
2

これを行うのは難しいです。それは不可能ではありませんが、実際には非常に困難です。

クロス ドキュメント メッセージングは​​、JavaScript を使用してあるページから別のページにメッセージを渡す方法です。このための最初の前提条件は、文書の出所が同じでなければならないということです。つまり、同じドメインの同じポートから送信され、同じプロトコルを共有する必要があります。うまく機能するのは、あるページが別のページにネストされている場合ですiframe。このような場合は、次のことができます。

  1. windowネストされたページのオブジェクトを取得し、イベント リスナーをイベントに追加しreceiveMessageます。
  2. window[name].postMessage(msg, url)他のウィンドウにメッセージを送信するために使用します。
  3. data送信した情報を含むメッセージ イベントのプロパティを取得します。

あなたのケースを難しくしているのは、タブを越えてコミュニケーションしたいということです。タブ間で XDM を実行した経験はありませんが、複数のタブでアプリケーションを実行し、相互にやり取りする必要がある場合は、アプリケーションの設計を確認する必要があると個人的には考えています... ユーザーは気に入らないかもしれませんブラウザで何かを変更すると、おそらくすぐに見ることができず、理解できなくなります。

とにかく、これを先に進めたい場合は、さまざまなブラウザーがどのようにタブにアクセスできるかを確認する必要があります。Firefox の場合は、この投稿Get window object from tabから開始することをお勧めします。Chrome の場合は、ここから開始することをお勧めします。.


質問が編集され、Greasemonkey の使用が追加されたことを考えると、これはあなたのニーズを満たす場合と満たさない場合があります。XDM を使用した解決策についてサポートが必要な場合は、喜んでお手伝いします。

于 2012-12-14T07:21:29.237 に答える