4

我的 Kynetx 应用程序用来float_html()放置一个装满内容的盒子。

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) 是从书签中使用的。如果您在同一页面上单击小书签两次,您将获得双重内容。

有什么方法可以检测到盒子已经在屏幕上并重复使用它?

4

1 回答 1

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 上多次单击此代码中的书签后的样子 替代文字


旁注:

始终将您的操作包装在 {} 中。如果您只有一个操作,则操作无需包装在 {} 中即可工作,但最好养成使用 {} 标记您的操作块的习惯。

于 2010-12-27T19:17:24.263 回答