2

ユーザーがリンクをクリックしたときに呼び出す Javascript 関数を KRL グローバル ブロックで定義しています。ルールセットの関連部分は次のとおりです。

global {
  emit <|
    function clear_hold() {
      app = KOBJ.get_application("a421x26");
      app.raiseEvent("clear_hold");
    }

  |>;
}

rule add_link_to_clear_hold {
  select when pageview ".*"
  pre {
    clear_div = << <div id="clear_hold">
      <a href="javascript:clear_hold()">Clear Hold</a>
      </div> >>;
  }
  {
    append("body", clear_div);
  }

rule clear_the_hold {
  select when web clear_hold
  {
    replace_html("#clear_link", "<div id='clear_link'>Not on hold</div>");
  }
  always {
    clear ent:hold;
  }
}

リンクをクリックすると、clear_link定義されていないエラー メッセージが表示されます。

JavaScript 関数を呼び出すにはどうすればよいですか?

4

2 に答える 2

5

ユーザーが実行している可能性のある他のアプリとの衝突を避けるために、次の名前空間メソッドを使用して JavaScript 関数を KOBJ オブジェクトにアタッチすることをお勧めします。

KOBJ.a60x33.clear_hold = function() { 
  KOBJ.log('...wohoo! You found me!'); 
}

次に、関数を次のように呼び出すことができます

KOBJ.a60x33.clear_hold();
于 2011-01-12T20:47:25.933 に答える
3

関数は KRL クロージャー内で定義されていますが、クロージャーの外から呼び出していました。外に見えるようにするために、関数を定義した後にKOBJに追加しました

KOBJ.clear_hold = clear_hold;

次に、リンクから呼び出すには:

href="javascript:KOBJ.clear_hold()
于 2011-01-12T20:12:13.477 に答える