2

Web サイトを変更する JavaScript エクステンションを作成しています。エクステンションは Web サイトにボタンを追加し、クリックするとページのコンテンツを変更します。私のスクリプトは、クロスドメインの xmlhttprequests を websiteB に送信する必要があり、インストール時にそのためのアクセス許可を取得します。

私の問題は、変更中の Web サイトのコンテンツ スコープで実行されるコードが、Web ページのコンテンツ スコープ内にあるため、クロス ドメイン リクエストを実行する権限がないことです。また、メイン拡張コードと、ページのボタン クリック時に実行されるコードとの間で変数を簡単に渡すこともできません。

これらは私のコードの関連部分です:

    // ==UserScript==
    // @include        http://www.WebsiteB.com/*
    // @match          http://www.WebsiteB.com/*
    // ==/UserScript==

    var a = 1;

    button.innerHTML = '<a href="javascript:void(0)" onclick="myFunc();">clickMe</a>';
    menu.appendChild(button);

    contentEval(function() {
        myFunc = function() {
            //a is undefined

            //this part does not have cross domain request permission   
        };
    }

http://wiki.greasespot.net/Content_Script_Injectionから取得したcontentEval を使用して、スクリプトが実行されているページとやり取りできる関連コードを取得します。それがなければ、Web サイトのボタンから myFunc を呼び出すことはできません。また、myFunc(a) を使用して変数を直接渡すことによって、メイン コード領域から myFunc() に変数を転送することもできません。myFunc(1) は機能しますが、私のニーズには合いません。

私が間違った方法で物事を進めている可能性があります。もしそうなら、私に教えてください。

Web ページと対話するコードからクロス ドメイン アクセス許可を取得する方法はありますか? そうでない場合、メイン コード領域からページのコンテンツ スクリプトにメッセージを渡すには何を使用すればよいですか?

4

0 に答える 0