>  기사  >  웹 프론트엔드  >  무손실 HTML 디스플레이 구현 code_javascript 기술의 Javascript 기사 차단 부분

무손실 HTML 디스플레이 구현 code_javascript 기술의 Javascript 기사 차단 부분

WBOY
WBOY원래의
2016-05-16 18:28:21987검색

내용이 html 형식이기 때문에 내용의 처음 몇 글자를 직접 가로채는 것은 당연히 부적절합니다. 그리고 모든 html 형식을 직접 제거한 후 가로채면 원하는 효과를 얻을 수 없습니다. 온라인으로 검색한 후에는 다음 코드를 작성하면 기본 요구 사항을 충족할 수 있습니다. (디버그하기 쉽기 때문에 js로 작성)

코드 복사 코드는 다음과 같습니다.

var br = {};
br.spTags = ["img","br","hr"];/*쌍으로 표시할 필요가 없는 태그*/
br.contain = function (arr,it){
for(var i=0,len=arr.length;iif(arr[i]==it){
return true; 🎜>}
}
return false;
}
br.subArtc = function(article,worldNum){
var result = []
/*먼저 필수 문자열을 가로채세요. */
var wcount = 0;
var startTags = [],endTags = []
var isInTag =
for(var i=0,len=article.length;i< len;i ){
var w = 기사[i];
result.push(w)
if(w=="<"){
isInTag = true; }
if( !isInTag){
wcount ;
if(wcount==worldNum){
break;
}
if(w=="> "){
isInTag = false;
}
}
/*문자열 처리*/
var j=0;
isInTag = false;
var isStartTag = true ;
var tagTemp = "";
while(jw = 결과[j]
if(isInTag){
if(w==">" || w= =" " || w=="/"){
isInTag = false
if(isStartTag){
startTags.push(tagTemp)
endTags.push (tagTemp)
}
tagTemp = "";
}
if(isInTag){
tagTemp =w; if(w= ="<"){
isInTag =
if(result[j 1]=="/"){
isStartTag =
j
}else{
isStartTag = true;
}
}
j ;
}
/*쌍으로 표시할 필요가 없는 img, br 및 기타 태그 제거*/
var newStartTags = [] ;
for(var x=0,len=startTags.length;xif(!br.contain(br.spTags,startTags[x]) ){
newStartTags.push(startTags[x]);
}
}
/*끝 태그 추가 없음*/
var unEndTagsCount = newStartTags.length
while(unEndTagsCount>0 ){
result.push("<");
result.push("/")
result.push(newStartTags[unEndTagsCount-1]); result.push("> ;");
unEndTagsCount--
}
return result.join("")

기본 아이디어:

1. 마크를 우회하고 콘텐츠의 실제 단어 수를 가져옵니다. 콘텐츠의 처음 100개 단어를 표시해야 하는 경우 마크 검색을 우회하고 100번째 단어의 실제 인덱스를 가져옵니다. . 그런 다음 이 인덱스 앞의 문자열을 가로챕니다.

2. 획득한 문자열을 기반으로 문자열에 존재하는 시작 태그와 끝 태그를 가져옵니다. 참고: 여기서 시작 태그는 "<"로 시작하고 다음 문자는 "/"가 아닙니다.

3. 2.에서 얻은 시작 태그 중 쌍으로 나타날 필요가 없는 태그를 제거합니다. br, img, hr 등

4. 3에서 처리한 시작 태그와 2에서 얻은 종료 태그를 비교합니다. 페어링이 되지 않으면 적절한 위치에 페어링합니다.
이 기능은 엄격한 테스트를 거치지 않았습니다. 관심이 있으시면 테스트에 도움을 주실 수도 있습니다. 더 나은 아이디어가 있으면 토론에 답변해 주세요.

작성자: cnblogs bravfing
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.