是这样的,我用window.open打开了一个外部服务器网页,本来呢,参数是scrollbar:true,可是无奈对方的网页代码里比如frame里有scroll="no",这样结果就是没有滚动条,我用FIREBUG测试过了,把那个no改成YES滚动条就出来了。
怎么办呢,跨域的话JS又不能修改那个网页的内容,所以我采取了以下方案。可能我没说清楚,是这样的,我用
var n = window.open();开了一个空的窗口
然后用
n.document.write('Loading...');把其显示的字符设置为loading
然后ajax通过服务器读取外部代理网页的HTML代码,然后把新窗口n的HTML内容全部替换掉。设想是这样,可是实际行驶起来有两个问题。1. 如果对方的引用css和js脚本或者FLASH全部是他们的服务器上的相对路径,怎么办,难道一个一个节点改?我的意思是有没有一种类似于修改location的方法,把窗口的location成对方页面的真实地址,这样相对路径就有效了,同时页面又不会真的去请求那个对方的页面。2. n.document.write('Loading...');把其显示的字符设置为loading了, 但是接下来我用n.document.clear()清除不掉这个内容。而且我发现用n.document.write把全部HTML写进去的话是没用的,跟直接打开那个页面的效果不同,好像document不会重新解析一样,我感觉
就是这两个问题,希望大家能一起讨论一下

解决方案 »

  1.   

    第一个问题,只有改,location的改变会载入相应的页面
    第二个问题,n.document.close()来关闭已打开的文档(document.clear()不建议使用),然后再n.document.write即可
      

  2.   

    [Quote=引用 2 楼 xfsnero 的回复:]
    第一个问题,只有改,location的改变会载入相应的页面 
    第二个问题,n.document.close()来关闭已打开的文档(document.clear()不建议使用),然后再n.document.write即可
    好家伙!
      

  3.   

    1.改会比较好.因为还涉及到超链接的标签.例如a.做个正则将src="替换成src="website就好了.不过只是单个页面.其实也可以直接将其JS.CSS存到你本地.2.别用document.write.在模板页写个<body>然后用body.innerHTML替换就不会出现你说的情况了.
      

  4.   

    我是楼主,我觉得不能改,因为不仅仅是JS,CSS的问题,而且我发现里面的JS代码大量调用了,window.location……