我写了两个页面:
a.html:var xingming='CK';
var nianling='30';
var a=100;
var f=function(){alert(a)};
window.location.href="http://127.0.0.1/b.html?xingming="+xingming+"&nianling="+nianling+"&f="+f;
b.html:function Request(strName){
var strHref = document.location.href;
var intPos = strHref.indexOf("?");
var strRight = strHref.substr(intPos + 1);
var arrTmp = strRight.split("&");
for(var i = 0; i < arrTmp.length; i++ ) {
var arrTemp = arrTmp[i].split("=");
if(arrTemp[0].toUpperCase() == strName.toUpperCase()) return arrTemp[1];
}
return 0;
}var name=Request("xingming");
var f=Request("f");
alert(name)
f()
现在不清楚怎么处理这个f, 有谁用过这个吗?

解决方案 »

  1.   

    function Request(strName){
        var strHref = document.location.href;//当前url
        var intPos = strHref.indexOf("?");//得到第一个?的位置
        var strRight = strHref.substr(intPos + 1);//截取url中?的位置
        var arrTmp = strRight.split("&");//把?后的字符串按照&进行切割
        for(var i = 0; i < arrTmp.length; i++ ) {//遍历&切割后的数组
        var arrTemp = arrTmp[i].split("=");//把当前值按照=切割, 比如 a=1
        if(arrTemp[0].toUpperCase() == strName.toUpperCase()) return arrTemp[1];//如果当前的键等于strName,返回当前值
        }
        return 0;
    }
      

  2.   

    var strRight = strHref.substr(intPos + 1);//截取url中?的后的字符串
      

  3.   

    <script>
    function Request(strName){ 
    var strHref = document.location.href; 
    var intPos = strHref.indexOf("?"); 
    var strRight = strHref.substr(intPos + 1);  
    var arrTmp = strRight.split("&"); 
    for(var i = 0; i < arrTmp.length; i++ ) {    
    var arrTemp = arrTmp[i].split("=");     
    if(arrTemp[0].toUpperCase() == strName.toUpperCase()) 
    return arrTemp[1];     
    }     return 0; 
    }   
    var a=1;
    var name=Request("xingming"); 
    var f=Request("f"); 
    alert(name) ;
     var f= new Function('return '+f)();   
     f()
    </script>   
    因为你那个传过来的是字符串,所以要重新new一下
    还有必须定义a的值,不然无法弹出来
      

  4.   

    var f= new Function('return '+f)(); 这个好像不行啊?FF报错了:SyntaxError: missing ( before formal parameters
      

  5.   

    你的 b.html 中有变量 a 吗?没有肯定是要出错的
    不需通过页面传递,你这样测试一下就可以了a = 123;
    f = 'function(){alert(a)}';ff = new Function('return '+f)();
    ff();
      

  6.   


    FF中是不能用f.toString()来取得函数的代码的还是老实的用字符串吧
    var f="function(){alert('"+a+"')}"; 
      

  7.   


    版主 你试过这个吗? 要是没定义变量a, 应该是常规错误,而不是语法错误啊,像这样:ReferenceError: a is not defined
      

  8.   


    版主 你试过这个吗? 要是没定义变量a, 应该是常规错误,而不是语法错误啊,像这样:ReferenceError: a is not defined

    你会用firbug么?写法是没错的
    关键你没处理传递过来的值
    获取跟IE解析本身就不通
    你那样ID传递过来是这样的:b.html?xingming=CK&nianling=30&f=function(){alert(a)}
    但是火狐不是:火狐实际解析成: b.html?xingming=CK&nianling=30&f=function%20(){alert(a)}
    这样当然出错,所以跟后面的程序没有关系,而是你要处理传递过来的数据,跟能调用是否没关系,你值传递过来的都是非法的了,又没经过任何处理,怎么谈得上下面的工作?
      

  9.   

    var f=Request("f").replace(/\%20/g, ""); 你加这个处理看看就知道了