3

ユーザーが最初にブラウザをロードしたときに、特定のent:変数をクリアしようとしています。私はこの例から始めました:

select using ".*" setting ()

if ent:browserOpened == 0 within 4 hours then {
    notify("Hello!", "Welcome to your browser! Kynetx rules doesn't it?)..... 
}
fired {
    ent:browserOpened += 1 from 1;
} else {
    ent:browserOpened += 1;
}

私のバージョン:

rule newWindow is active
  {
     //This rule checks to see if a persistent variable has been incremented in the 20 seconds
     select using ".*" setting ()

    if ent:browserOpened == 0 within 20 seconds then 
                 {                                                   
        popup(250, 250, 150, 400, "http://www.google.com")
       //noop();
           }
  fired 
         {
         ent:browserOpened += 1 from 1;  
         clear ent:clickMerchantID;                          
         }
    else 
         {    
         ent:browserOpened += 1;
         }                                  

  }

ent:browserOpened変数をどのようにインクリメントしているかに関係しているのではないかと思います。Cookieをクリアしてブラウザを更新した場合にのみ、ポップアップが表示されます。'within'動詞の場合もあると思います。ドキュメントでそれについて多くを見つけることができませんでした。

ルールが正しく実行されていることがわかったら、ポップアップを削除してnoop()を残します。

ご協力いただきありがとうございます!!

4

1 に答える 1

3

within 節とカウンターでバグを発見したかもしれません。カウンターを追跡するだけでなく、フラグを使用することもできます。以下をテストしたところ、動作することがわかりました。

rule newWindow {
   //This rule checks to see if a persistent variable has been incremented in the 20 seconds
   select using ".*" setting ()

  if not ent:browserOpened within 20 seconds then 
               {                                                   
      notify("test", "condition passed!");
     //noop();
         }
fired 
       {
       set ent:browserOpened;  
       clear ent:clickMerchantID;                          
       }
  else 
       {    
       set ent:browserOpened;
       }                                  

}

ノート:

永続変数の within 句 (およびフラグの使用法) は、こちらのドキュメントに示されています

より簡単に認識され、観察しやすいため、テストnotify()の代わりに使用することを検討してください。popup()alert()

于 2011-03-26T04:02:01.437 に答える