Javascript 如果从自己的文件中调用函数,则不会触发JSON回调

Javascript 如果从自己的文件中调用函数,则不会触发JSON回调,javascript,json,callback,jsonp,undefined,Javascript,Json,Callback,Jsonp,Undefined,标题是我能总结的最好的方式。如何解释这一点有点模糊。 基本上,如果我在一个html文件中包含包含JSON函数的javascript文件,那么触发JSON函数回调就可以了。然而,如果我只是从JSON函数本身的文件中调用它,那么回调永远不会触发。不确定这是某种javascript还是web浏览器安全功能。如果能解释一下,那就太好了 这里有一些例子 工作版本: json.html:精简 <html> <head><script type="text/javascript"

标题是我能总结的最好的方式。如何解释这一点有点模糊。 基本上,如果我在一个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中的另一个函数:

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

经过一番研究,我发现我是对的。它是用于扩展的web浏览器安全功能。 从以下链接:

引文

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

使用由其扩展页定义的变量或函数 使用由网页或其他内容脚本定义的变量或函数
JSON属于上述类别,因为它使用函数进行回调。

有错误吗?此行:删除窗口[回调];。您可能想要删除window.jsonCallback;。不要紧。事实上,现在我查过了。我确实在json_url.php上遇到了一个错误。错误:未捕获引用错误:未定义jsonCallback我正在使用Chrome并在元素视图中看到了这一点。应该注意的是,如果它不起作用,则脚本是由Chrome扩展加载的用户脚本。我想这与此有关。可能是某种范围。给我们一些更多的信息。脚本是如何加载的,扩展的作用是什么?通常,扩展页和背景页是分开的。所以窗口变量在后台是其他的,在扩展中是其他的。当然,没问题。我只是没有意识到这很重要。好吧,让我们试着解释一下。正如我之前的评论所说,这是一个javascript文件,它是在开发模式下在Chrome中加载的用户脚本。此文件是为了影响网页而构建的,而不是实际托管在服务器上。IE:像任何其他扩展/用户脚本一样修改网页外观。角色是使用JSON从另一台服务器(我的服务器)检索数据。窗口变量的作用域是有意义的。我假设window.jsonCallback函数在作为用户脚本加载时对文件不可用。
    JSON_Object(content_page, function(json_obj) {
        alert(json_obj); // This version doesn't work. Never called.
    });