2014-09-02 170 views
-1

那么,我想要获取预标记内部的HTML,并将其转换为可读文本!将脚本html标记转换为纯文本

我的代码工作的大部分事情:

var pre = document.getElementsByTagName("pre"); 

for(i in pre) { 
    pre[i].textContent = pre[i].innerHTML; 
} 

但它不为脚本标记,它们变成文字之前会进行装载作业。 我真的不想用整个库来做到这一点,如果它甚至是可能的。

E.g.即使在<pre>标签内,也会显示以下提醒。

<pre> 
    <script>window.alert("Test!");</script> 
<pre> 

有什么建议吗?

+1

这些脚本是否处理'

'的内容? –
                        
                            
                                2014-09-02 12:21:48
                            
                        
                    

+0

我不认为你可以阻止'script'标签被执行。如果浏览器遇到'script'标签,它将立即执行。 – bzeaman 2014-09-02 12:25:18

+0

不,它类似于'',我不想执行它,只是为了显示为纯文本。 – 2014-09-02 12:25:24

回答

1

为了使某些标签可读,只需将<改为&lt;>改为&gt;即可。浏览器不会执行任何操作,用户仍然可以看到<script>alert(321)</script>

+0

我可以建议正则表达式,如果你打算这样做。 – 2014-09-02 12:35:12

+0

@PopeyGilbert正则表达式或简单替换就可以了。 – Justinas 2014-09-02 12:40:14

+0

这不是问题的答案。 “我的代码适用于大多数事情”。它已经在工作,除了'脚本'标签,因为它们在被更改之前正在执行。 – bzeaman 2014-09-02 12:42:08

0

script-标签遇到时,它们将被执行。这意味着pre-标签中的script-标签在处理之前应该被“转义”。

执行此操作的一种方法是在处理pre s之前转义其内容(例如,通过PHP)。

在加载之前,您无法访问pre标签,并且无法阻止script-标签在已经加载时执行。