2013-04-17 3 views
2

내 HTML 문서의 모든 요소 스타일을 "display : none;"으로 설정하고 싶습니다. HTML 소스 파일을 편집 할 수 없습니다. 나는 시도하고이 일을 Qt는 웹킷을 사용하고 있는데, 이것은 지금까지 내 코드입니다 :divs하지만 하나만 숨기기 (Qt Webkit)

QWebFrame *frame = webView->page()->mainFrame(); 

QWebElement document = frame->documentElement(); 
foreach (QWebElement element, document.findFirst("body").findAll("*")) 
    element.setAttribute("style", "display: none"); 


QWebElement canvas = document.findFirst("canvas"); 
canvas.setAttribute("style", "display: inline"); 

그러나이 캔버스 요소를 포함하여 모든 것을 숨 깁니다.

어떻게하면됩니까?

답변

1

이것은 'canvas'의 조상이 'display : none;'스타일을 갖고 있기 때문일 수 있습니다. 뿐만 아니라 중 하나 내에 포함되므로 표시하지 아무것도, 내 생각 엔이 같은 부모를 통해 루프를 할 수 있다는 것입니다 :

QWebElement parent = canvas.parent(); 
do{ 
    parent.setAttribute("style", "display: inline"); 
}while(parent!=null) 

그래도 난 구문에 조금 떨어져있을 수 있습니다.

+0

내가 노력 솔루션 (비록 편집 일을했다'QWebElement 캔버스 = document.findFirst ("캔버스"); QWebElement 부모 = canvas.parent(); 는 { parent.setAttribute ("스타일"을 수행하십시오 " while (& parent! = &body); canvas.setAttribute ("style", "display : inline"); 이것은 내 코드입니다. 무한 루프 (분명히 & 부모 결코 & 몸 같음)에 갇혀 있습니다. – RaptorDotCpp

+0

변수의 주소를 비교하고 있기 때문에 그건. 할 수 없어. –

+0

그럼 루프에 좋은 조건을 설정할 수 있습니까? – RaptorDotCpp

1

모든 <div> 요소의 가시성을 조작하고 싶다고하셨습니다. 그들 모두를 얻으려면, 당신은 당신의 foreach 블록에 다음 쿼리를 대체 할 수 있습니다 :

document.findAll(QLatin1String("div") 

다른 대답에 주어진 제안은 정확 - 당신이 <canvas>의 부모 요소는 그 자체 있는지 확인해야 display: none으로 설정하십시오.