通过JavaScript访问周围的HTML元素,没有上下文

时间:2012-04-11 19:42:12

标签: javascript dom relativelayout element

我想要的是能够使用JavaScript 处理围绕“入口点”(例如<script>标签或事件)的无上下文HTML元素。我对我能做的事情有一些严格的限制。

摘要

  1. 我有多个用户生成的HTML块,需要在加载时自行处理。
  2. 这些块的内容可以包含类似的块,具有类似的行为。
  3. 内容也需要复制一次,可能会重新开始执行2中提到的脚本。
  4. 这些块是从静态模板生成的,不能(最初)包含唯一的标识数据,如ID或随机属性值。
  5. 这些块也可以通过AJAX生成,这是我无法控制的。他们需要照顾自己,而不依赖任何执行顺序。
  6. 背景

    这适用于论坛软件,其中某些BBCode标记,例如[tag]content[/tag]被替换为固定HTML。我无法访问任何服务器端脚本,因此替换是与上下文无关的,即始终相同。 例如,[tag]{content}[/tag]会变成类似:

    <span ...>
      ...
      {content}
      ...
      <!-- script entry point -->
    </span>
    

    我需要在加载数据的时候进行一些客户端处理。

    我无法改变问题的要求。最终产品是用于生成选项卡的代码,例如:

    [tabspace]
      [tab]content 1[/tab]
      [tab]
        content 2, and
        nested tabs:
        [tabspace]...[/tabspace]
      [/tab]
    [/tabspace]
    

    脚本输出的内容包含“标签按钮”本身,它们将链接到各自的content

    限制

    1. 我无法使用ID。一切都必须或作为模板的无上下文替换开始。
    2. [tag]可以嵌套。
    3. 脚本需要复制一些内容,其中部分内容可以是类似的脚本,依此类推。这会弄乱已经在外部标签对上运行的脚本。我有一个自下而上的解决方案来解决这个问题,但它依赖于在任何深度启动脚本而不必担心类似的环境。 (另一种表达方式)
    4. 可以使用AJAX随时在页面上的任何帖子中动态加载这些标记。

    5. 模板中的任何一点都可以有脚本,以便更轻松地解决问题。

    6. 我尝试了什么

      1. 使用JS在加载时动态输出<span id='something random'></span>,搜索给定的ID并使用其位置查找周围的元素。当我动态加载页面并嵌套标记时,它不起作用。
      2. 给周围的元素一个类,找到它的最后一个元素。这不起作用,因为我们可能会在页面中间加载后进行更新。
      3. 我宁愿避免

        的解决方案
        1. 使用<img src='bogus' onerror='script entry point'/>,我可以使用this运行脚本并访问周围的代码。但我宁愿不使用断开的链接和错误来解决一个简单而相关的问题。

0 个答案:

没有答案