先看一段调用:<div id="container" style="width: 640px; height: 360px">
<script src="http://www.domainA.com/demo/main.js?xml_path=http://www.domainA.com/demo/slides.xml"></script>
<script>slideshow.init("container");</script>
</div>上面这段调用实现为http://www.domainA.com/demo/main.js会根据加载后的http://www.domainA.com/demo/slides.xml内的信息(包含资源地址如domainA上的图片地址)将相应的内容显示在container这个DIV内。这种实现如果是在domainA域下的页面内是没有问题的。但是现在我将把上面这段调用放在其它域内(比如domainB)的页面,就会报错应该是跨域访问的问题吧?不知道有没办法解决。

解决方案 »

  1.   

    个人觉得这个不叫跨域访问吧跨域访问比如一个页面嵌入了不同域名的网页,他们之间的js是不能访问的,因为存在权限问题。而你你这个js是引入进来的。虽然不清楚你为什么要这样引入,但我觉得你在domainA下可以引入,那在domainB下应该也可以引入的等待高手,另能不能请教一下这样引入js是为了解决一个什么问题?
      

  2.   

    好办,在脚本中加上:document.domain="http://www.domainB.com";
      

  3.   

    我想实现和FLASH跨域调用一样的效果,如下:<object width="660" height="186"> <param name="movie" value="http://www.go2album.com/album2/b/r/e/a/k/breakr/4f4314db02e/Q2Fycw%3D%3D.swf?xml_path=http://www.go2album.com/album2/b/r/e/a/k/breakr/4f4314db02e/slides.xml"></param> <param name="allowScriptAccess" value="always"></param><param name="wmode" value="transparent"></param> <param name="allowFullScreen" value="true"></param> <param name="_flashcreator" value="http://www.photo-flash-maker.com"/><param name="_flashhost" value="http://www.go2album.com"/><embed src="http://www.go2album.com/album2/b/r/e/a/k/breakr/4f4314db02e/Q2Fycw%3D%3D.swf?xml_path=http://www.go2album.com/album2/b/r/e/a/k/breakr/4f4314db02e/slides.xml" type="application/x-shockwave-flash" wmode="transparent" allowFullScreen="true" allowScriptAccess="always" width="660" height="186"></embed></object>
      

  4.   

    谢谢!请有没有什么不更改脚本的方法?比如只要通过服务器设置或标签加参数项。如果只能通过更改脚本那又如何对所有外域都可用,是这样吗document.domain="http://www.*.com";
      

  5.   

    a,b,cc引用了 a、b在c里可用完全调用a b里面的所有对象和方法
      

  6.   

    不只是调用JS文件,JS文件加载参数项后的XML文件后还在加载里面对应的domainA.com域上的资源如图片。比如上面贴出的那段FLASH嵌入的代码,放在任何服务的任何页面都有效。
      

  7.   

    其实朋友你要实现的功能JS是办不到的,因为JS作为一种在浏览器环境下运行的脚本语言,本身具有很大的不安全行,所以W3C和MS的浏览器都对Javascript的功能做了很多限制,限制内容全部如下:1. JS无法直接访问文件系统。JS无法打开、删除甚至检测文件或文件夹是否存在。
    2. JS无法直接与网络层进行通信。脚本代码无法随意打开网络套接字,也无法使用不熟悉的协议进行通信。
    3. JS控制浏览器窗口本身的功能是受限的,包括窗口的尺寸和位置。
    4. 运行于X域中的脚本无法与Y域中的文档进行交互,不仅不能通过框架页进行跨域访问,也不能通过Ajax请求进行跨域访问。这一限制成为同源策略。
    5. 脚本代码无法直接访问内存或者运行本地代码。
    6. 脚本无法安装本地程序。
    7. 脚本无法锁定计算机,也无法执行其它可能导致计算机无响应的操作。
    这些限制有时也被成为安全沙箱。
    就你的问题,我举个例子:
    假如某个脚本运行在位于http://www.A.com/index.html的页面上,并且发起了对下列位置的Ajax请求,情况如下:
    URL                                         输出     解释
    http://www.A.com/products/javascript.html 成功
    http://www.A.com/info/about/contact.html 成功
    https://www.A.com/store.html                 失败 协议(https)不同
    http://www.A.com:81/info/about/contact.html 失败 端口(81)不同
    http://browse.A.com/books/all.html         失败 主机(browse)不同
    希望能够帮助到你!