2010-07-23 66 views
5

運行的是這樣的:它使用document.body.innerHTML.replace有多安全?

document.body.innerHTML = document.body.innerHTML.replace( '舊價值', '新價值')

危險嗎?

我擔心也許一些瀏覽器可能搞砸了整個頁面,因爲這是JS代碼,將被放置在我的控制網站,誰可能會被誰知道什麼瀏覽器我拜訪了一點點擔心。

我的目標只是在整個身體中尋找一個字符串的出現並將其替換。

+0

我不是100%肯定的,但不會這也刪除任何事件處理程序綁定到身體的HTML元素?我的意思是,它可能足夠聰明,不會再次解析整個身體,但是如果身體有一個'

3

lucideer同意,您應該找到包含您正在查找的文本的節點,然後進行替換。 JS框架使這非常簡單。 jQuery的例如有強大:包含(「文本」)選擇

http://api.jquery.com/contains-selector/

0

如果你想堅如磐石的解決方案,你應該遍歷DOM並找到值來代替這種方式。

但是,如果'舊值'是一個永遠不會與標籤,屬性或attbibute值混在一起的長字符串,那麼通過替換就可以保證相對安全。

+0

迭代整個DOM效率極低。 – lucideer 2010-07-23 17:07:11

+1

這不是*低效率。並非所有代碼都在嵌套循環和10ms定時器內運行。 – MooGoo 2010-07-23 17:20:46