2010-01-05 2 views
1

Я хочу удалить список атрибутов dom events из html? как это сделать? :Как удалить атрибут события из html с помощью Hpricot?

before = "<div onclick="abc" >abc</div>" 
after = clean_it(before) // after => "<div>abc</div>"  


DOM_EVENT_TO_BE_REMOVE = "onclick|ondblclick|onerror|onfocus|onkeydown" // i want to remove these events 

// i want to do it like this 
def clean_it(html) 
    doc = Hpricot(html)  
    doc.search(DOM_EVENT_TO_BE_REMOVE).remove_attribute(DOM_EVENT_TO_BE_REMOVE) 
    doc.to_s 
end 

спасибо.

ответ

2

Использование "remove_attr", Например:

doc.search("[@onclick]").remove_attr("onclick") 

Так что для вашего документа, сделать что-то вроде:

DOM_EVENT_TO_BE_REMOVE = ["onclick", "ondblclick", "onerror", "onfocus", "onkeydown"] 
DOM_EVENT_TO_BE_REMOVE.each do |de| 
    doc.search("[@#{de}]").remove_attr(de) 
end 
+1

'DOM_EVENT_TO_BE_REMOVE =% ш [OnClick ondblclick OnError OnFocus OnKeyDown]' может быть немного очистителя , – kejadlen

+0

большое спасибо .. – www

+0

нужно ли doc.search ("* [@ onclick]")? Я думаю, что синтаксис css нуждается в типе элемента перед обнаружением атрибутов. Подстановочный знак позволяет искать все элементы. – Lukas

Смежные вопросы