-
Notifications
You must be signed in to change notification settings - Fork 1
개발자 매뉴얼 | 이미지 alt 설정
Seunggyu Lee edited this page Nov 13, 2022
·
4 revisions
// mobilenet ml을 불러와서 사용
const ml = async (img) =>{
model = await mobilenet.load();
const predictions = await model.classify(img);
// console.log(predictions[0].className)
return predictions[0].className;
}
// 화면이 렌더링되면 해당 페이지에서 alt 태그가 달려있지 않은 이미지들을 탐색
// 해당 이미지 태그의 alt를 달아주고 모든 작업이 완료 시 문서 html text를 스테이트 값으로 저장
// React를 활용해 state가 변경된 부분만 재렌더링이 일어납니다. 이로 인해 jquery 등의 다른 프레임워크보다 성능적으로 우수합니다.
useEffect(()=>{
page_ref.current.innerHTML = props.body;
const page= page_ref.current;
const imgs = page.querySelectorAll('img');
if(imgs.length !== 0){
const promiseList = Array.from(imgs).map(async (element)=>{
// console.log(element);
if(!element.hasAttribute('alt')||element.alt === ""){
element.setAttribute('crossorigin','anonymous');
return ml(element).then((alt) => {
element.alt = alt;
})
}
});
Promise.all(promiseList)
.then(()=>{
// page.innerHTML에는 head 태그가 같이 달려있지 않아 생기는 버그를 고치기 위해 <head></head>를 앞에 붙여줌
// 정확한 이유 : 벡엔드에서 스타일을 주입할 때 head 태그를 기준으로 문자열 탐색을 하기 때문
props.render("<head></head>" + page.innerHTML);
})
}
})