【问题标题】:Trouble viewing HTML5 pages in a .Net-4.0 WPF Application在 .Net-4.0 WPF 应用程序中查看 HTML5 页面时遇到问题
【发布时间】:2011-08-18 22:50:37
【问题描述】:

我对 C# 和 .Net 比较陌生,这是我的第一个 WPF 项目,所以我希望这只是我缺乏熟悉和 Google-Fu 弱的一个例子。

我需要为 HTML5 开发工具创建一个预览窗口。这些页面将包含 javascript、ogg vorbis 和/或 mpeg4 (m4a) 音频以及 png 图像。

Frame 控件似乎可以很好地查看文件。我最初尝试了 WebBrowser 控件,但它似乎是基于 IE7 的,它不支持我需要的功能。 Frame好像用的是安装好的IE9,这正是我所需要的。问题似乎在于加载内容。

如果页面托管在基于 Apache 的 Web 服务器上,我可以让它工作,但这绝对不是首选的解决方案。专业的 Web 开发人员不是目标受众,所以我觉得期望用户能够安装和配置一个是不合理的。我尝试使用 HttpListener 实现一个简单的服务器,但是(a)它似乎并没有比直接设置 Frame Source="C:/test_project_path/index.html" 更好,并且(b)如果用户已经在他们的机器上运行了 Web 服务器,我不想制造任何问题。我在尝试添加前缀时遇到了“与现有注册冲突”异常的问题——即使我没有安装其他 Web 服务器,更不用说运行了,而且我验证没有其他任何东西在使用相同的端口——这使得我犹豫要不要依赖它。

我真正想做的是:

myFrame.Navigate("C:/test_project_path/index.html");

这几乎可行。我似乎得到了图形元素,但 javascript 应用程序崩溃并出现“无法获取属性值:对象为空或未定义”错误。正如我所说,因为它在从 Apache 提供服务时可以工作,所以问题似乎在于并非所有 javascript 文件都正确加载。

我的问题:

我是否缺少任何设置?我收到有关活动内容的安全警告,我必须点击它。我想摆脱它,但如果它与我当前的问题没有直接关系,那不是我现在主要关心的问题。

是否有某种方法可以检查 Frame 控件是否正在执行所有必要的子请求以加载页面,并且它们是否得到满足?把手表放在myFrame上,我只能看到初始页面(index.html)。除了 myFrame 呈现的内容和我得到的 javascript 错误之外,似乎没有办法判断各种子元素是否存在。

我需要使用 InvokeScript() 调用 javascript 文件,还是只是为了从 WPF 控件访问功能?

【问题讨论】:

    标签: javascript wpf visual-studio-2010 html c#-4.0


    【解决方案1】:

    编辑:可以在这里找到更通用的解决方案:http://forums.devshed.com/net-development-87/serving-images-using-httplistener-414552.html 它似乎适用于我正在处理的所有文件类型。

    问题似乎在于服务器为输出流编码非文本文件的方式。我是这样做的,这或多或少在我在网上找到的大多数示例中都是这样做的:

    StreamReader streamReader = new StreamReader(requestUrl);
    byte[] buffer = Encoding.UTF8.GetBytes(streamReader.ReadToEnd());
    response.ContentLength64 = buffer.Length;
    response.OutputStream.Write(buffer, 0, buffer.Length);
    response.OutputStream.Close();
    

    这适用于文本文件,例如 html 和 javascript,但对于图像,它似乎会抛出一堆额外的垃圾,基本上是文件大小的两倍。解决方案是将图像作为图像读取,然后将其保存到输出流:

    Image image1 = Image.FromFile(requestUrl);
    image1.Save(response.OutputStream, System.Drawing.Imaging.ImageFormat.Png);
    response.OutputStream.Close();
    

    显然,您需要更改 ImageFormat 以处理您想要提供的任何图像类型。这适用于 PNG,我怀疑声音文件的解决方案类似,尽管我还没有解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-20
      相关资源
      最近更新 更多