Программирование > JavaScript & JScript
MSO.Word.HTML.CleanUp
.:cRaw:.:
Я не супер-знаток javascript, мне ближе vbscript, поэтому функцию я написал на vbscript, а потом уже переводил в javascript? но не без проблем... vb-шная отрабатывает как надо, а та, что на js отрабатывает както странно... требуемый результат достигается только после нескольких исполнений, вместо одного!
в чем ошибка, кто подскажет?
вариант на vbscript:
--- Код: ---
valid_nodes="P,H1,H2,H3,H4,H5,H6,B,STRONG,I,EM,U,SUP,SUB,TABLE,TR,TD,TBODY,THEAD,TH,A,UL,OL,LI,BLOCKQUOTE,BR"
valid_attributes="href,width,align,height,border,alt,colSpan,rowSpan"
valid_nodes=Split(valid_nodes,",")
valid_attributes=Split(valid_attributes,",")
Function is_valid(item,valid_list)
For Each valid_item In valid_list
If item=valid_item Then is_valid=True: Exit For
Next
End Function
Function cleanup(html)
Set container=document.CreateElement("div")
container.innerHTML=html
For Each node In container.all
If is_valid(node.tagName,valid_nodes) Then
For Each attribute In node.attributes
If attribute.specified And Not is_valid(attribute.name,valid_attributes) Then
If Not node.removeAttribute(attribute.name) Then node.removeAttributeNode(attribute)
End If
Next
Else
node.removeNode(False)
End If
Next
cleanup=container.innerHTML
End Function
--- Конец кода ---
вариант на javascript:
--- Код: ---
var valid_nodes=\'P,H1,H2,H3,H4,H5,H6,B,STRONG,I,EM,U,SUP,SUB,TABLE,TR,TD,TBODY,THEAD,TH,A,UL,OL,LI,BLOCKQUOTE,BR\';
var valid_attributes=\'href,width,align,height,border,alt,colSpan,rowSpan\';
valid_nodes=valid_nodes.split(\',\');
valid_attributes=valid_attributes.split(\',\');
function is_valid(item,valid_list){
for(k=0;k
mike:
У меня заработал такой вариант:
--- Код: ---
var valid_nodes=\'P,H1,H2,H3,H4,H5,H6,B,STRONG,I,EM,U,SUP,SUB,TABLE,TR,TD,TBODY,THEAD,TH,A,UL,OL,LI,BLOCKQUOTE,BR\';
var valid_attributes=\'href,width,align,height,border,alt,colSpan,rowSpan\';
valid_nodes=valid_nodes.split(\',\');
valid_attributes=valid_attributes.split(\',\');
function is_valid(item,valid_list){
for(k=0;k
.:cRaw:.:
неа... я попробовал...
нифига, как минимум приходится трижды пройтись по грязному html, чтобы получить то, что нужно...
mike, возьми какой-нибудь *.doc, чтобы в нем было форматирование разное... и bold и italic и таблицы и выделение цветом и пр. скопируй из word-а текст и вставь в div. у меня для полной очистки требуется трижды нажать на "Сlean Up HTML".
я алертами все облепил, для проверки и получилось, что он просто перепрыгивает иногда через некоторые ноды, вот это мне и не понятно... (
mike:
--- Цитировать ---.:cRaw:.:
mike, возьми какой-нибудь *.doc,
--- Конец цитаты ---
Ну так я на доке и проверял :) VB и JS дают одинаковые результаты.
mike:
Хотя таки да, все зависит от файла... :(
Навигация
Перейти к полной версии