2010-12-27 36 views
4

私のKynetxアプリはfloat_html()を使用してコンテンツでいっぱいの箱を作ります。同じコンテンツを2回フローティングしないようにするにはどうすればよいですか?

rule float_box { 
    select when pageview ".*" 
    pre { 
    content = << 
     <div id='messagebox'> 
     <h3>Floating Message Box</h3> 
     <ul id='my_list'></ul> 
     </div> 
    >>; // trippy 
    } 
    float_html("absolute","top:25px","right:20px",content); 
} 

rule fill_box { 
    select when pageview ".*" 
    foreach ["alpha","bravo","charlie"] setting (list_item) 
    append("#my_list", "<li>#{list_item}</li>"); 
} 

ブックマークレットからアプリ(a421x27)が使用されています。同じページでブックマークレットを2回クリックすると、ダブルコンテンツが表示されます。

ボックスが既に画面上にあることを検出して再利用する方法はありますか?

+1

あなたのアプリが最終的にブラウザ拡張機能を介して実行される場合、拡張機能が2度起動される心配はありません。しかし、ブックマークレットを介して展開する予定がある場合は、有効な懸念があります。 –

答えて

4

jQueryを使用してコンテンツを手動でフロートさせて、コンテンツがすでに存在するかどうかを確認できます。

ruleset a60x516 { 
    meta { 
    name "so-answer-example" 
    description << 
     so-answer-example 
    >> 
    author "Mike Grace" 
    logging on 
    } 

    rule float_box { 
    select when pageview ".*" 
    pre { 
     content = << 
     <div id='messagebox'> 
     <h3>Floating Message Box</h3> 
     <ul id='my_list'></ul> 
     </div> 
     >>; /// fixing syntax highlighting bug 
    } 
    { 
     emit <| 
     if ($K("#messagebox").length == 0) { 
      $K(content).css({ 
      "position": "absolute", 
      "top": "25px", 
      "right": "20px" 
      }).appendTo(document.body); 
     }; 
     |>; 
    } 
    } 

    rule fill_box { 
    select when pageview ".*" 
    foreach ["alpha","bravo","charlie"] setting (list_item) 
    { 
     append("#my_list", "<li>#{list_item}</li>"); 
    } 
    } 
} 

これは

サイドノートexample.com alt text


に、このコードから複数回ブックマークレットをクリックした後のように見えるされているものです。

は必ず{}であなたの行動を包みます。アクションは1つのアクションしかない場合は{}で囲まれずにアクションが動作しますが、{}でアクションブロックをマークする習慣に入るのが最善です。

+0

これはいい名前があれば、これは良い行動になるでしょう。 –

関連する問題