2016-09-09 2 views
2

Я включил WebkitBrowser из WebKit.Net в моей # Проект C, и она работает, как положено, за исключением того, когда я хочу, чтобы загрузить Html строку. Вот Html я хочу показать:C# Webkit не будет отображаться Html

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <!--<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />--> 
    <meta name="viewport" content="width=device-width, initial-scale=2"> 
    <meta name="description" content=""> 
    <meta name="author" content=""> 
    <title>mentor+</title> 
    <link href="http://fonts.googleapis.com/css?family=Lato:300,400,700,300italic,400italic,700italic" rel="stylesheet" type="text/css"> 
    <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script> 
    <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script> 
<link rel="stylesheet" type="text/css" href="./wicket/resource/org.apache.wicket.Application/css/style-ver-1463736306000.css" /> 
<link rel="stylesheet" type="text/css" href="./wicket/resource/org.apache.wicket.Application/css/landingpage-ver-1463664722000.css" /> 
<link rel="stylesheet" type="text/css" href="./wicket/resource/org.apache.wicket.Application/font-awesome/css/font-awesome.min-ver-1448702160000.css" /> 
<link rel="stylesheet" type="text/css" href="./wicket/resource/org.apache.wicket.Application/vis/vis.min-ver-1460038992000.css" /> 
<link rel="stylesheet" type="text/css" href="./wicket/resource/de.agilecoders.wicket.webjars.request.resource.WebjarsCssResourceReference/webjars/bootstrap/3.3.6/css/bootstrap-ver-1455709722000.css" /> 
</head> 
    <body> 
    <div> 

    </div> 

<div> 
<div class="container-fluid"> 

    <div class="bs-example"> 

     <div class="jumbotron"> 

      <div id="mynetwork" ></div> 
     </div> 
    </div> 
</div> 
</div> 
    <footerbucket><script type="text/javascript" src="./wicket/resource/org.apache.wicket.resource.JQueryResourceReference/jquery/jquery-1.12.0-ver-1457005336000.js"></script> 
<script type="text/javascript" src="./wicket/resource/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/res/js/wicket-event-jquery-ver-1457005336000.js"></script> 
<script type="text/javascript" src="./wicket/resource/org.apache.wicket.Application/js/topButton-ver-1462984064000.js"></script> 
<script type="text/javascript" src="./wicket/resource/org.apache.wicket.Application/js/jquery-1-12-1-min-ver-1462366394000.js"></script> 
<script type="text/javascript" src="./wicket/resource/org.apache.wicket.Application/vis/vis.min-ver-1463655366000.js"></script> 
<script type="text/javascript" src="./wicket/resource/org.apache.wicket.Application/js/networkgraph-ver-1463047612000.js"></script> 
<script type="text/javascript" src="./wicket/resource/de.agilecoders.wicket.core.markup.html.references.JQueryMigrateJavaScriptReference/js/jquery-migrate-1.3.0-ver-1457345416000.js"> </script> 
<script type="text/javascript" id="bootstrap-js" src="./wicket/resource/de.agilecoders.wicket.webjars.request.resource.WebjarsJavaScriptResourceReference/webjars/bootstrap/3.3.6/js/bootstrap-ver-1455709722000.js"></script> 
<script type="text/javascript" > 
/*<![CDATA[*/ 
Wicket.Event.add(window, "load", function(event) { 
createNetwork(new vis.DataSet([{"id":0,"label":"Amalie","color":"#FA5858"},{"id":1,"label":"Daniel","color":"#2E64FE","shape":"box"},{"id":2,"label":"Carola","color":"#01DF01","shape":"ellipse"},{"id":3,"label":"Annette","color":"#58FAF4","shape":"ellipse"},{"id":4,"label":"Marius","color":"#58FAF4","shape":"box"}]),new vis.DataSet([{"id":0,"from":0,"to":1,"length":80,"width":6,"color":"#2E64FE"},{"id":1,"from":0,"to":2,"length":40,"width":6,"color":"#01DF01"},{"id":2,"from":0,"to":3,"length":40,"width":6,"color":"#58FAF4"},{"id":3,"from":0,"to":4,"length":40,"width":6,"color":"#58FAF4"}])); 
;}); 
/*]]>*/ 
</script> 
</footerbucket> 
</html> 
</body> 

Я использовал это с Cefsharp с АдресСервером, и она работала:

ChromiumWebBrowser cef = new ChromiumWebBrowser(); 
cef.LoadHtml(responseFromServer, server + "home"); 

Как вы можете видеть, один параметр был АдресСервером.

Если я экспортирую Html-строку в файл и попытаюсь загрузить ее с любым браузером, она тоже не работает, поэтому я думаю, что адрес сервера должен быть предоставлен, но я не могу найти подходящий метод. Не могли ли вы помочь мне, пожалуйста?

EDIT:

Теперь я редактировал код с сервера, на котором он будет работать с параметрами POST, и он работает в любом браузере. За исключением WebKit!

URL, теперь выглядит следующим образом:

http://mentorplus.de/networkgenerator/getNetworkgraph?network=[{%22focusPerson%22:%22Amalie%22,%22memberList%22:[{%22role%22:%22MENTOR%22,%22name%22:%22Daniel%22,%22gender%22:%22MALE%22,%22relationship%22:%22FRIENDS%22,%22emotionalRelationship%22:%22NORMAL%22,%22distance%22:%22TWOHOUR%22},{%22role%22:%22MENTOR%22,%22name%22:%22Carola%22,%22gender%22:%22FEMALE%22,%22relationship%22:%22FAMILY%22,%22emotionalRelationship%22:%22NORMAL%22,%22distance%22:%22ONEHOUR%22},{%22role%22:%22NETWORKMEMBER%22,%22name%22:%22Annette%22,%22gender%22:%22FEMALE%22,%22relationship%22:%22OTHER%22,%22emotionalRelationship%22:%22NORMAL%22,%22distance%22:%22ONEHOUR%22},{%22role%22:%22NETWORKMEMBER%22,%22name%22:%22Marius%22,%22gender%22:%22MALE%22,%22relationship%22:%22OTHER%22,%22emotionalRelationship%22:%22NORMAL%22,%22distance%22:%22ONEHOUR%22}]}]&authenticated=tellur 

Так что именно проблема WebKit? Может, сценарии?

EDIT 2:

Интересно, используя браузер Standard МОФ работает. Поэтому я отмечаю эту тему как ответ, но меня все еще интересует решение

Большое спасибо!

+0

Вы используете проект WebKit.NET? – hankide

+0

Да, извините, забыл упомянуть –

+0

Итак, вы пытаетесь загрузить статическую строку HTML с указанным адресом сервера, чтобы все javascript, таблицы стилей и другие материалы, на которые ссылаются в HTML, поступали с сервера? И теперь вы хотите сделать то же самое с помощью WebKit.NET? Просто чтобы убедиться, что мы здесь на одной странице. – hankide

ответ

1

К сожалению, нет прямого способа сделать это, используя WebKitBrowser от WebKit.NET. Однако должна быть возможность загрузить HTML-строку, перепрыгнув через несколько циклов.

Внутри, класс WebKitBrowserCore использует вызов _webView.mainFrame().loadHTMLString(Text, null) в методе DocumentText. Это подтверждает, что по крайней мере некоторая загрузка HTML возможна внутри. Однако этот метод находится в собственном WebKit WebView, поэтому вам нужно изменить проект, чтобы получить к нему доступ.

Я бы создал вилку проекта и выполнил следующие изменения.

  1. Добавить новый метод в WebKitBrowserCore с именем LoadHTMLString с двумя параметрами для строки HTML и адресом сервера.
  2. Вызвать метод _webView.mainFrame().loadHTMLString(html, server); с параметрами.
  3. Выставляют LoadHTMLString метод к WebKitBrowser класс точно так же, как и другие, как, например, метод Navigate (он просто вызывает метод Navigate сердечника.

я не могу проверить это прямо сейчас, так что я не совсем Убедитесь, что внутренний метод loadHTMLString WebView работает по назначению.

Edit: Похоже, вы можете также использовать метод GetWebView в WebKitBrowser, чтобы вызвать метод mainFrame().loadHTMLString() непосредственно как этот (синтаксис может быть неправильным, но вы будете это цифра):

(IWebView)webKitBrowser.GetWebView()).mainFrame().loadHTMLString(html, server); 

Edit 2: Я только понял, что WebKit - проект с открытым исходным кодом, и легко проверить, что loadHTMLString делает то, что я думаю. Вот выдержка из файла заголовка WebFrame.h:

/*! 
    @method loadHTMLString:baseURL: 
    @param string The string to use for the main page of the document. 
    @param URL The base URL to apply to relative URLs within the document. 
    - (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)URL; 
*/ 

HRESULT loadHTMLString([in] BSTR string, [in] BSTR baseURL); 

Это точный метод вам нужно вызвать и метод CEFSharp вызовов внутри.

+0

Хорошо, я попробую ваши первые два ответа, но я не смог найти какой-либо метод ** loadHTMLString ** внутри WebKitBrowser класс, поэтому я думаю, что мне нужно переписать это прямо внутри источника, правильно? ** РЕДАКТИРОВАТЬ **: ваш первый Редактор выбрасывает ** HRESULT E_FAIL ** Ошибка –

+0

@DanielDirtyNativeMartin Правильно, вам нужно пройти через пункты с 1 по 3, чтобы вывести 'loadHTMLString' из ядра в класс WebKitBrowser. – hankide

+0

@ DanielDirtyNativeMartin Я все еще думаю, что должно быть возможно использовать мое первое редактирование в качестве решения, но может быть что-то странное. Мне нужно попробовать, если я смогу заставить его работать. Викинг проекта и изменение источника - это гораздо больше работы, поэтому было бы неплохо заставить его работать с существующей функциональностью. – hankide

Смежные вопросы