0

タイトルは、私が要約できる最良の方法です。これを説明する方法は少しあいまいです。基本的に、HTML ファイル内から JSON 関数を保持する JavaScript ファイルを含めると、JSON 関数をトリガーします - コールバックが機能します。ただし、独自のファイル内から JSON 関数を呼び出すだけでは、コールバックは発生しません。これがある種の JavaScript または Web ブラウザのセキュリティ機能であるかどうかは不明です。説明のために素晴らしいでしょう。

下記は用例です。

作業バージョン:

json.html: (トリミング)

<html>
<head><script type="text/javascript" src="json.js"></script></head>
<script>
    JSON_Object(json_url, function(json_obj) {
        alert(json_obj); // this version works!
    });
</script>
<html>

json.js:

function JSON_Object(json_url, callback) {
    // This function will return an object to the JSON data.
    json_url = json_url + "&callback=jsonCallback";

    var json_script = document.createElement("script");
    json_script.setAttribute("src", json_url);
    json_script.setAttribute("type", "text/javascript");

    window.jsonCallback = function(jsonObjReturn) {
        // cleanup
        document.body.removeChild(json_script);
        delete window[callback];

        callback(jsonObjReturn); // use our callback function to return the data.
    }

    document.body.appendChild(json_script);
}

非稼働バージョン - json.js 内の別の関数:

    JSON_Object(content_page, function(json_obj) {
        alert(json_obj); // This version doesn't work. Never called.
    });
4

1 に答える 1

0

少し調べたところ、私は正しいことがわかりました。これは、拡張機能用の Web ブラウザーのセキュリティ機能です。次のリンクから: http://code.google.com/chrome/extensions/content_scripts.html

ページより引用

ただし、コンテンツ スクリプトにはいくつかの制限があります。彼らがすることはできません:

  • 拡張機能のページで定義された変数または関数を使用する
  • Web ページまたは他のコンテンツ スクリプトによって定義された変数または関数を使用する

JSON は、コールバックに関数を使用するため、上記のカテゴリに分類されます。

于 2012-06-27T18:38:12.740 に答える