使用Prototype从innerHTML中剥离<script>标记

jak*_*ine 0 javascript dom prototypejs

使用Prototype,我试图从DOM中提取一段文本 - 这通常是一个简单的$().innerHTML工作,但HTML是嵌套的.

<td class="time-record">
    <script type="text/javascript">
    //<![CDATA[
    document.write('XXX ago'.gsub('XXX', i18n_time_ago_in_words(1229311439000)));
    //]]>
    </script>
    about 11 months ago by <span class="author"><strong>Justin</strong></span>
</td>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,innerHTML将会选择JavaScript,这将导致各种问题.

在没有JavaScript的情况下提取的最佳/最有效/最快的方法是about 11 months ago by <span class="author"><strong>Justin</strong></span>什么?

Cre*_*esh 5

使用innerHTML,并通过stripScripts运行它:

var html = $$('td.time-record')[0].innerHTML.stripScripts()
Run Code Online (Sandbox Code Playgroud)

这对于获取单个单元格的html非常有用.对所有td.time-record元素执行相同操作的更通用的解决方案是:

$$('td.time-record').pluck('innerHTML').invoke('stripScripts');
Run Code Online (Sandbox Code Playgroud)

这将返回给你一个每个单元格的html(<script>删除元素)的数组,然后你可以.join('')或迭代.