我有一種情況,我將外部HTML加載到網頁上的所見即所得編輯器中。外部HTML來自可信來源,幷包含來自多個不同頁面的兩個特定<div>
標記之間的內容。防止內聯JS執行
我的問題是,一些頁面包含內嵌JavaScript事件處理程序。所以當我在WYSIWYG編輯器中工作時,某些事件會導致執行這個js。
大多數情況下,它不會做任何事情,除了填寫控制檯錯誤說... is not defined
,這可能是全部的,這不會是一個問題。但是,它仍然很混亂,我不知道是否沒有可能執行類似alert(...)
這樣的頁面,這可能會變得非常煩人。代碼都是可信的,但是與其預期的背景脫離,可能會產生不良結果。
我想找到一種方法來全局阻止執行,最好不用修改內聯腳本。我可以爲每個處理程序執行一些操作,例如attach =false;
,但是我必須檢查所有傳入的元素,即使使用正則表達式,這也會降低性能。另外,在將編輯過的HTML提交給服務器之前,我必須將其刪除,這似乎是一個很大的麻煩,而且很難做到完美無瑕。
有沒有辦法阻止在這個特定的上下文中執行這個在線代碼?
這一切都取決於你如何加載內容。通常,當片段添加到DOM時,頁面片段中的內聯腳本不會被**評估。如果他們正在被評估,那是因爲你的一些代碼(或者你正在使用的一個庫)正在這樣做。 – Pointy
我使用$ .jqte插件來創建所見即所得的編輯器。我的猜測是這是源代碼,因爲它必須先編輯內容,然後再編輯它。這是我想要的。否則,我可以剝去所有標籤或輸出沒有標籤的內容。我現在才意識到,角度或類似的東西將會是這方面的正確工具,但我認爲我有點太過分了。 – user1167442