<script type="text/javascript">
function checknr(url)
{
var xmlHttp=new ActiveXObject('Microsoft.XMLHTTP');
var chkUrl=url;
xmlHttp.open('get', chkUrl, false);        
try{xmlHttp.send();}
catch(e){}
var urltitle=bytes2BSTR(xmlHttp.responseBody);
return urltitle;
}
</script>
<Script Language=Vbscript>
Function bytes2BSTR(vIn)
strReturn = ""
dim i
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function
</script>window.onload=function(){document.getElementById("nyzt").innerHTML=checknr("xxx.htm")}以上代码在IE下运行正常,但是到了FF下怎么也不显示xxx.htm的内容,急死。

解决方案 »

  1.   

    只有ie才支持 vbscript
    firefox不支持vbscript
      

  2.   

    再者你创建XMLHTTPRequest对象的时候应该考虑不同浏览器的情况(所以还是使用jQuery等比较好,兼容不同浏览器),以下Google内容://需要针对IE和其他不同浏览器建立这个对象的方法的不同代码
        //var xmlhttp;
        if(window.XmlHttpRequest){
              //针对 IE7 8,红火的firefox, 和他的东家mozellar, opera ,手机的safari
            xmlhttp=new XMLHttpRequest();
            //对某些特定的浏览器byg做的修正
            if(xmlhttp.overrideMimeType){
                   xmlhttp.overrideMimeType("text/xml");
            }
        }
        else if(window.ActiveXObject){
               //针对IE 5 IE5.5 IE 6
            //两个用来创建XMLHttpRequest对象控件的名称,保存在一个JS数组中
            //排在前面的版本较新
            var activexName=["MSXML2.XMLHTTP","MICROSOFT.XMLHTTP"];
            for(var i=0;i<activexName.length;i++){
                try{
                    //取出一个控件进行创建,如果创建成功就终止循环
                    //如果创建失败就抛出异常;然后继续循环 尝试创建
                       xmlhttp=new ActiveXObject(activexName[i]);
                      break;
                }catch(e){
                }
            }
        }
        //确认XMLHttpRequest对象是否创建成功
        if(!xmlhttp){
            alert('创建失败')
        }else{
            alert(xmlhttp)
        }至于你下面的Vbscript,那时微软的私有,火狐不支持。
      

  3.   

    那请问在firfox下有什么代码能实现一样的功能呢?难道在firfox中不能innerHTML另一网页的内容?
      

  4.   

    直接用jquery的$("#id").html(内容)
      

  5.   

    看来跨域的是不好实现,那有没有什么浏览器或是浏览器插件能够在浏览网页时获得网页的高度呢?取得后可以直接设置iframe的高度了,哈哈,不知道有没有这种插件呢?实在不想用PS一个一个量去,太费劲了。
      

  6.   

    首先楼主创建XMLHttpRequest未考虑不同浏览器的实现,下面是jQuery1.2.6版本中对xhr创建的方法,比较简洁:var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
    说到iframe高度自适应,我头几天刚好研究了下这个问题,网上通常都是类似下面的解法:var iframeid = document.getElementById("iframeid" + i); //iframe id
                    if (document.getElementById) {
                        if (iframeid && !window.opera) {
                            if (iframeid.contentDocument && iframeid.contentDocument.body.offsetHeight) {
                                iframeid.style.height = iframeid.contentDocument.body.offsetHeight + 'px';
                            }
                            else 
                                if (iframeid.Document && iframeid.Document.body.scrollHeight) {
                                    iframeid.style.height = iframeid.Document.body.scrollHeight + 'px';
                                }
                        }
                    }
    但在我的项目中,总是有时会莫名其妙不能自适应;后来我想了一种方法,就是给iframe引入的页面body底部注入一个标签比如<label>,然后取得该标签的scrollTop,将这个值+20px左右的一个修正值作为iframe的高度;经测试能完全兼容并没有问题,楼主可参考下。
      

  7.   

    呵呵,谢谢大家啊,其实我是想将淘宝客的页面的引入到我自己网站的页面中,由于跨域(因为引用的是淘宝官网上的页面)试了好多,都不行,无法目标页面的高度,更无法在目标页面中添加任何代码了,无法,只得在别的方面想办法了。刚找到一个方法,不敢藏私,答出来大家分享一下,可能大家很多人都知道的,问题的解决还是在火狐中,众所周知,火狐有很多插件,可以实现很多功能,这里就用到了一个火狐的插件 —— FireShot  ,这个插件的作用就好象一个照相机一样,可以对网页进行拍照,可以直接截取全部网页内容,而不管屏幕上有没有显示出来,哈,这下就OK了,想引用哪个页面就浏览一下那个页面,然后拍照,将网页照片放到PS里面看一下,只要你不设置缩放,拍下来的都是实际大下,宽度是整个浏览的宽度,这不是我们需要的,但高度就是整个网页的高度了,然后再修改一下iframe的代码,直接设置得到的高度,虽然不如JS代码实现简单,但是在JS无法跨域的前提下,还是要比一屏一屏的截取下来后用PS拼接要简单很多的,当然要是你要引用的页面很多的话还是会很烦琐,但是想我这样一共只需要引用30页左右的情况下,确确实实是减少了很多工作量,希望能对大家有所帮助。这里再次感谢大家的热情帮助!