1

在我的 win 8 Metro 应用程序中通过 iframe 嵌入外部网站时遇到问题。

我只是按照通常的方式做

<iframe src="http://d1303.de/boom.htm"></iframe>

如果嵌入式网页出现严重错误(javascript 错误......,就像http://d1303.de/boom.htm的情况一样),我的整个应用程序崩溃并且 Visual Studio 抱怨某些脚本文件中的某些内容深入包含的网站。

处理远程 iframe 时有什么特别需要考虑的吗?

4

2 回答 2

0

我在 msdn 论坛上问过这个问题,最后在这里得到了 Steven Cheng的帮助回答:

对于基于 Windows Store javascript 的应用程序,通过 iframe 引用的外部网页将在与本地页面(从项目内容文件夹加载)不同的上下文中加载。因此,iframe 托管的外部页面将无法访问某些系统 API 和资源。

对于您的情况,我认为 iframe 托管的外部页面不会导致主 Windows Store 应用程序(主机应用程序)崩溃。我创建了一个简单的测试 Windows 应用商店 JavaScript 应用程序(使用导航项目模板)并添加一个页面以在 iframe 元素中显示“http://d1303.de/boom.htm”页面。这是我的行为:

1)通过“Ctrl + F5”启动时,导航到iframe页面时,由于脚本错误,页面无法加载iframe内容。但是托管应用程序没有崩溃,我仍然可以导航回其他页面在其他页面上运行良好。

2) 当通过“F5”开始调试应用程序时,在导航到 iframe 页面时会进入 Visual Studio。这是因为默认调试设置会在应用程序中发生未处理的 js 异常时进入 VS IDE(您可以通过“调试 --> 异常...”菜单查看配置)。此外,如果我选择“继续”,该应用程序仍然可以继续运行(导航到其他页面以工作)。

所以 iframe 引用页面中的脚本错误只会破坏它自己的页面。有关在基于 javascript/html 的 windows 商店应用程序中加载的网页的不同上下文的更多信息,以下书籍非常适合您:

免费电子书:使用 HTML、CSS 和 JavaScript 编程 Windows 8 应用程序(第一次预览版) http://blogs.msdn.com/b/microsoft_press/archive/2012/06/04/free-ebook-programming-windows-8- apps-with-html-css-and-javascript-first-preview.aspx

于 2012-11-21T08:48:08.137 回答
-1

嗨,因为在 Windows 8 中你不能从其他域注入,你不能只将 iframe 嵌入到你的代码中,但你可以做的是:

您可以制作一个 div,而不是在 div 内设置 innerHTML 并将响应静态到其他 URL,您可以尝试这样:

---HTML---

<div id="container"></div>

---JS---

WinJS.xhr({
url: 'http://yourwebsitehere'
}).done(function (result) {
     var domContainer = document.getElementById("container");
     domContainer.innerHTML = toStaticHTML(result.response);
});

但它不会像一个 iframe 一样,但你仍然可以使用它,如果你只是想显示来自其他域的页面。

-Yusak Setiawan-

http://apptivate.ms/apps/1271/mathboard

于 2012-11-15T01:05:02.140 回答