【发布时间】: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