0

标题是我总结的最好方式。如何解释这个有点模糊。基本上,如果我在 html 文件中包含保存 JSON 函数的 javascript 文件,则触发 JSON 函数 - 回调有效。但是,如果我只是从它自己的文件中调用 JSON 函数 - 回调永远不会触发。不确定这是否是某种 javascript 或网络浏览器安全功能。非常感谢您的解释。

这里有些例子。

工作版本:

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

从页面引用

但是,内容脚本有一些限制。他们不能:

  • 使用由其扩展页面定义的变量或函数
  • 使用由网页或其他内容脚本定义的变量或函数

JSON 属于上述类别,因为它使用回调函数。

于 2012-06-27T18:38:12.740 回答