我写了两个页面:
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, 有谁用过这个吗?
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, 有谁用过这个吗?
解决方案 »
- js中的 if (val[1]===this.undefined) 和 if (val[1]== "yes") 中的 三个等于 和 两个等于有什么区别?
- 正则初学者遇到问题,求助(T_T 急__)
- 赋与html元素以生命,让其具有自己的行为[强烈推荐]
- HTML显示
- 如何在前面加一个图片? document.writeln(wholemessage)
- 如何在客户端使用new ActiveX 创建 MediaPlayer的对象?
- 百分求教,关于select赋值给input的问题.万分紧急.多谢多谢.
- 改变鼠标形状de问题!!
- 在Javascript中如何简单地将一个字符串转换成日期?
- 求 js(jquery)学习方法
- extjs 怎样从数据库或后台中获取值给form填充默认值
- js 数组长度问题
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;
}
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的值,不然无法弹出来
不需通过页面传递,你这样测试一下就可以了a = 123;
f = 'function(){alert(a)}';ff = new Function('return '+f)();
ff();
FF中是不能用f.toString()来取得函数的代码的还是老实的用字符串吧
var f="function(){alert('"+a+"')}";
版主 你试过这个吗? 要是没定义变量a, 应该是常规错误,而不是语法错误啊,像这样:ReferenceError: a is not defined
版主 你试过这个吗? 要是没定义变量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)}
这样当然出错,所以跟后面的程序没有关系,而是你要处理传递过来的数据,跟能调用是否没关系,你值传递过来的都是非法的了,又没经过任何处理,怎么谈得上下面的工作?