我有一个页面X,如果满足某些条件,它应该具有指向页面A,B和C的超链接。我希望做的是(在服务器上,正在构建页面)修剪出不符合我条件的超链接。我想要这样构建的方式是,在为X上的链接构建HTML的Javascript函数中,eval存在于A,B和C中的函数,其中返回true / false,告诉我是否或不包括链接。
到目前为止我已经编写了它,以便X动态地将适当函数的名称拼凑在一起,根据它们的名称调用A,B和C并使用eval。问题是eval似乎不知道函数的位置。
由于这是服务器端,我不相信我可以使用标签,因为我认为这是客户端代码。我不想使用顶部,因为我希望X与A,B和C松散耦合。
这是在IIS上运行的ASP页面中的Javascript。
有关如何让eval在服务器上找到该功能的任何建议都表示赞赏。
MJ
[编辑]
function shouldLink(filename)
{
filename = "a.asp";
var splits = filename.split(".");
var file = splits[0].toUpperCase() + "_ShouldLink()"; // A_ShouldLink() function name built here
var exec = "<!--#include virtual=\"a.asp\" -->";
exec += "eval( " + file + " );";
try{
return eval( exec );
} catch( err ){
}
return true;
}
基本上在eval这里我想要调用名为A_ShouldLink()的函数(它位于a.asp中)。
答案 0 :(得分:1)
我不太明白你想做什么,但是如果你根据动态数据命名函数,似乎你可以退后一步,重写函数以通过参数等动态工作。你有可能发布一些码?
答案 1 :(得分:1)
我可能错了,但我认为你不能以这种方式使用包含文件。我从未见过以这种方式动态添加的包含文件。
尝试
function shouldLink(filename)
{
filename = "a.asp";
var splits = filename.split(".");
var file = splits[0].toUpperCase() + "_ShouldLink()"; // A_ShouldLink() function name built here
Server.Execute(fliename)
var exec = "eval( " + file + " );";
try{
return eval( exec );
} catch( err ){
}
return true;
}
显然,您需要注意文件名的路径。
我使用this article获取灵感