2015-11-30 128 views
0

我正在使用雙贏的WebControl(也嘗試了內置的WPF瀏覽器),它的內容是簡單的HTML和JavaScript文件,它們被定義爲嵌入式資源。Web瀏覽器和嵌入式資源

對於我的POC,所有的文件都必須是嵌入式的。

XAML

<Window x:Class="WebPOC.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:forms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" 
    Title="MainWindow" Height="350" Width="525"> 
<Grid> 
    <WindowsFormsHost> 
    <forms:WebBrowser x:Name="WebBrowser"/> 
    </WindowsFormsHost> 
</Grid> 

代碼隱藏

public MainWindow() 
{ 
    InitializeComponent(); 
    var stream = Assembly.GetEntryAssembly().GetManifestResourceStream("WebPOC.www.index.html"); 
    WebBrowser.DocumentStream = stream; 
} 

Web內容:

alert("test");
<!DOCTYPE html> 
 

 
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> 
 
<head> 
 
    <meta charset="utf-8" /> 
 
    <script src="js/test.js"></script> 
 
    <title></title> 
 
</head> 
 
<body> 
 
    <p>test</p> 
 
</body> 
 
</html>

出於某種原因,鏈接JavaScript文件給出了一個錯誤:

enter image description here

什麼想法?

+0

它是在一個錯誤的地方尋找嵌入式js和沒有辦法要知道從嵌入式資源中獲取它,除非你明確地設置它們。 [檢查此](http://stackoverflow.com/questions/9934357/how-to-load-html-javascript-from-embedded-resource-into-winform-web-browser) –

回答

0

在您的應用程序中,WebBrowser會加載一個HTML頁面。該頁面來自資源,此時無所謂。 現在webbrowser想渲染你的頁面並解析HTML。解析它時,它明白它必須加載另一個「文件」js/test.js,我假設它也存儲在您的資源中。 您的webBrowser不知道他需要從資源中加載js/test.js,我想他會嘗試發送HTTP請求,但會失敗。

簡短的回答:不使用嵌入的資源HTML文件的鏈接對方:你的web瀏覽器實例化將不能夠在它們之間進行導航

+0

感謝您的答覆! ,我認爲這是問題,所以,WebControl不支持嵌入式資源? –

+0

webControl可以加載一個流,所以還有一個來自你的嵌入式資源的流(這就是你現在正在做的)。但webControl的工作是處理HTML,而在HTML中,你無法說「從myResource加載」。也許你可以制定webControl,攔截導航事件(也許在導航之前?)並處理它們以服務於你的內部結果。但是,真的,我認爲你迫使網頁瀏覽器控件以一種不適合工作的方式工作 –