1

特定の条件が満たされた場合、ページ A、B、および C へのハイパーリンクを持つことになっているページ X があります。私が望んでいるのは、(ページが構築されているサーバー上で) 私の条件を満たさないハイパーリンクを取り除くことです。これを構造化する方法は、X 上のリンクの HTML を構築している Javascript 関数で、A、B、および C に存在する関数を評価し、真/偽が返されるかどうかを教えてくれることです。リンクを含めないでください。

ここまで書いてきたのは、X が動的に A、B、および C で呼び出す適切な関数の名前をそれらの名前に基づいて組み合わせ、eval を使用するようにしたことです。問題は、 eval が関数の場所を認識していないように見えることです。

これはサーバー側であるため、タグを使用できるとは思えません。これはクライアント側のコード用だと思うからです。X を A、B、および C と疎結合にしたいので、先頭に を使用したくありません。

これは、IIS で実行される ASP ページの Javascript です。

サーバー上の関数を評価する方法についての提案は大歓迎です。

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;
}

基本的に、ここでの評価では、A_ShouldLink() という名前の関数を呼び出す必要があります (これは a.asp にあります)。

4

2 に答える 2

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;

}

明らかに、ファイル名のパスに注意する必要があります。

この記事をインスピレーションに使用しました

于 2011-09-19T23:48:21.100 に答える
1

何をしたいのかよくわかりませんが、動的データに基づいて関数に名前を付ける場合は、パラメーターなどを介して動的に機能するように関数をステップバックして書き直すことができるようです。コードを投稿できる可能性はありますか?

于 2011-09-19T21:31:19.480 に答える