BRUC
@BRUC
"А зори здесь тихие..."

Как правильно подгружать css файл в WebBrowser?

Добрый день.

Использую язык C# и систему WPF для построения GUI интерфейса. И появилась задача выводить на экран "красиво" оформленный текст, да так, что бы пользователь мог его сам создавать. Для этого я выбрал HTML + CSS.

Для отображения я использую класс WebBrowser, но вот на этом моменте(отображения) и появляется наша проблема, которую я сейчас и опишу, а так же дополню моими догадками, которые, как я не исключаю, являются верными.

Допустим у нас есть следующий HTML-файл:
<!DOCTYPE HTML>
<html>
    <head>
        <title>Тест подгрузки css-файла</title>
        <meta http-equiv=Content-Type content="text/html; charset=utf-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
        <link rel="stylesheet" type="text/css" href="cs_start.css">
    </head>
    <body>
        <h1>Заголовок</h1>
        <p>А это уже абзац, который не несёт в себе смысловой нагрузки и служит для более полного наполнения скриншота, что бы понять суть проблемы.</p>
        <p>Конечно нам одного абзаца мало и поэтому мы добавляем ещё парочку.</p>
        <hr/><br>
        <h1>Второй заголовок</h1>
        <p><q>А правда, правды нет?</q> - довольно интересная фраза, но в данном контексте вообще смысла не несёт.</p>
        <p>И ещё один абзац, последний.</p>
    </body>
</html>


CSS-файл:
/*Все заголовки по центру*/
h1 { 
    text-align:  center;
}

p {
    text-indent: 20px;
}
/*Разрыв абзаца*/
hr {
    border: none;
    background-color: #dbdbdb;
    height: 2px;
}

/*Фон*/
body {
    height: auto;
    width: auto;
    overflow: hidden;
    background: #ffffff;
    border: 25px solid #dbdbdb;
    margin: 10px;
    padding: 10px;
    font-family: Segoe UI Historic;
    font-size: 19px;
}


На экране браузера Google Chrome это выглядит следующим образом:
b6484c3686344d47b630ea849214bbdd.png

Но WebBrowser шутит над нами и выводит другой результат:
abbbb1ee08ed48c4aadd70be36c5f091.png

Причина ясна, не подгружает CSS-файл. Или подгружает как-то не так. Что бы в этом убедиться на сто процентов, в теге head мы добавляем тег style с содержанием CSS-файла:
<head>
        <link rel="stylesheet" type="text/css" href="cs_start.css">
        
        <style type="text/css">
            h1 { 
                text-align:  center;
            }
            
            p {
                text-indent: 20px;
            }
            
            hr {
                border: none;
                background-color: #dbdbdb;
                height: 2px;
            }
            
            
            body {
                height: auto;
                width: auto;
                overflow: hidden;
                background: #ffffff;
                border: 25px solid #dbdbdb;
                margin: 10px;
                padding: 10px;
                font-family: Segoe UI Historic;
                font-size: 19px;
                
            }
        </style>
        
    </head>


И о чудо, WebBrowser вывел нам то, что мы и хотели:
ff435fb1de2d43079f8da2b9938ea993.png

Вот мои догадки причины этого сего беспорядка:
HTML-файл подгружается по следующему пути: file:///D:/ ... .html
, а вот CSS-файл, подгружаемый с помощью тега link, по слегка другому пути: http://D:/ ... .html

CSS-файл подгружается через виртуальный адрес, хотя лежит он на абсолютном пути, а не на относительном.

Это чисто мои догадки, но если они верны, то: Как правильно подгружать css файл в WebBrowser?
  • Вопрос задан
  • 778 просмотров
Пригласить эксперта
Ответы на вопрос 2
@tommy_13
все тестить на сервере
Ответ написан
AndrewHaze
@AndrewHaze
Умею гуглить яндексом
Такое написание
<link rel="stylesheet" type="text/css" href="cs_start.css">

означает, что файл cs_start.css подгружается из той же папки где лежит файл в который этот код вписан (по крайней мере так работает в обычном браузере)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы