我想总结一下解决这个问题的方法。您可以在此处找到有用的 URL 。
<script>
本质上,您在导入 JavaScript 时通过 pages 标签注入代码。通过此标记导入的任何内容都会立即在全局上下文中执行。因此,不要传递 JavaScript 文件,而是将 URL 传递给网站,该网站返回的页面不是 HTML 标记,而是返回 JavaScript 代码文本的页面,该文本在您的代码中调用回调。
您使用 URL 参数告诉页面要返回什么“回调”以及需要进入回调的任何参数。例如:
<script type="text/javascript" src="http://crossdomainhost/CrossDomainConsumerSite/Default.aspx?callback=myCallback¶m1=myParam"></script>
评估时,'src' 参数返回的页面内容为:
myCallback( myParam );
在服务器端,您将在该 URL 上创建一个站点,该站点将覆盖 OnLoad 等效项(使用您使用的任何服务器端语言)。OnLoad 将采用 URL 参数并重新调整它们以匹配上面的回调调用,而不是页面 HTML。
进行替换后,客户端加载页面时会立即调用回调。这样做的好处是'src' URL 不必与托管页面的域匹配。
下面是客户端 HTML 页面最后的样子:
<script type="text/javascript">
var myCallback = function( myParam ) {
alert( "this was called across domains!" );
};
</script>
<script type="text/javascript" src="http://crossdomainhost/CrossDomainConsumerSite/Default.aspx?callback=myCallback¶m=myParam></script>