Web浏览器和嵌入式资源

时间:2015-11-30 10:47:45

标签: c# wpf webbrowser-control

我正在使用win-forms WebControl(也尝试使用内置的WPF浏览器),它的内容是简单的html和JavaScript文件,定义为嵌入式资源。

对于我的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;
}

网络内容:

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

任何想法?

1 个答案:

答案 0 :(得分:0)

在您的应用程序中,WebBrowser加载HTML页面。该页面来自资源,此时无关紧要。 现在webbrowser想要​​渲染你的页面并解析HTML。在解析它时,它理解它必须加载另一个“文件”js/test.js,我认为它也存储在您的资源中。 您的webBrowser不知道他需要从资源加载js/test.js,我认为他试图以某种方式发送HTTP请求,这将失败。

简短回答:不要将嵌入式资源用于相互链接的HTML文件:您的实例化webBrowser将无法在它们之间导航