2010-01-18 5 views
1

웹 브라우저 컨트롤에서 렌더링 된 HTML 페이지를 변경하는 방법이 있습니까? 내가 원하는 것은 내 웹 브라우저 컨트롤에서 렌더링 된 HTML 페이지를 변경하여 선택한 텍스트를 강조 표시하는 것입니다.Webbrowser 컨트롤에서 렌더링 된 페이지를 변경하십시오.

내가 한 것은 웹 클라이언트를 사용하고 webclient.Downloadstring()을 사용하여 페이지의 소스 코드를 가져와 특정 텍스트를 강조 표시 한 다음 웹 브라우저에 다시 씁니다. problm은 상대 경로로 렌더링되기 때문에 해당 페이지와 함께 이미지가 나타나지 않습니다.

이 문제를 해결할 방법이 있습니까? 웹 브라우저 컨트롤에서 이미지를 감지하는 방법이 있습니까?

답변

2

HTML을 왜곡 텍스트로 변경해야하는 이유가 확실하지 않은데 왜 IHighlightRenderingServices를 사용하지 않습니까?

HTML 문자열을로드 할 때 기본 URL을 지정하려면 문서의 IPersistMoniker 인터페이스를 사용하고 IMoniker 구현에 URL을 지정해야합니다.

0

다른 방법으로 다운로드하고 웹 브라우저 컨트롤을 사용하여 텍스트를 바꾸면이 방법으로 링크가 작동하는 것이 좋습니다. 당신이 모든 다음에 검색 텍스트 상자에 검색 용어가 "안녕하세요", 당신은 다음과 같이 인사의 모든 차례 나오는 대체 말하는대로 교체입니다 :

<font color="yellow">hello</font> 

물론,이 HTML을 대체 할 수 있습니다 SPAN 태그 (DIV 태그의 인라인 버전이므로 SPAN을 사용하여 줄을 끊지 않고 DIV를 사용합니다). 그러나 어느 경우에 이러한 태그를 모두 사용하면 다음과 같은 색 또는 엄청나게 CSS 호환되는 다른 속성을 변경하려면 CSS를 사용할 수있는 스타일 속성이 : 물론

<SPAN style="background-color: yellow;">hello</SPAN> 

을, 다른 헤아릴 수있다 HTML을 사용하여 색상을 변경하는 방법을 원할 경우 웹에서 더 많은 것을 자유롭게 검색 할 수 있습니다.

이제 dotnet에서 .Replace() 함수를 사용하여 검색된 텍스트를 바꿀 수 있습니다. 매우 쉽습니다. 따라서 .DocumentText를 사용하여 전체 문서를 문자열로 가져올 수 있으며 .Replace()를 사용하여 모든 출현이 대체되면 .DocumentText로 다시 설정할 수 있습니다 (따라서 .DocumentText를 사용하여 원본을 가져옵니다. 문자열 및 .DocumentText를 바꾼 문자열로 설정). 물론, 당신은 아마 실제 HTML 내부 항목이 작업을 수행 할 수 있으므로하지 않는 당신이 할 수있는 아래 같은 모든 요소를 ​​통해 각 루프를 수행하여 페이지의 모든 요소를 ​​통해 단지 루프 :

For Each someElement as HTMLElement in WebBrowser1.Document.All 

각 요소에는 .InnerText/.InnerHTML과 .OuterText/.OuterHTML이 있으며, 가져올 수 (읽기) 및 설정 (바꿀 텍스트로 덮어 쓸 수 있음)합니다.

물론, 필요에 따라 .InnerText 및/또는 .OuterText를 대체하고 덮어 쓰고 싶을 수도 있습니다.

도움이 더 필요하면 알려주세요. 어느 경우 든, 나는 그것이 어쨌든 당신을 위해 어떻게 효과가 있었는지 알고 싶습니다. 또는 우리가 당신의 문제에 가치를 더하기 위해 할 수있는 것이 더 있다면, 알고 싶습니다. 건배.

관련 문제