【问题标题】:Is there a "Browser Control" to host a website inside Flash/Silverlight?是否有“浏览器控件”来在 Flash/Silverlight 中托管网站?
【发布时间】:2009-04-29 19:03:52
【问题描述】:

我正在寻找类似于 VB6 / .Net Winforms“浏览器控件”的东西,它可以让您在应用程序中显示浏览器。 我不想只渲染一个页面,我希望它是一个功能齐全的浏览器,人们可以在其中点击链接、运行 Javascript 等。

本质上,我想要的是一个 IFrame,只是它在 Flash 应用程序或 Silverlight 应用程序中运行。

这样做的最终原因是我想击败 IFrame 破坏者。我正在制作一个网络应用程序,让您可以查看其中的其他网站,并且我遇到了一堆具有此代码的网站:

var t=top.location,w=window.location;if(t!=w) t.replace(w);

(来自 eBay 顺便说一句)

这基本上将用户从我的网站弹出并进入他们的网站。 我希望通过在插件沙箱中使用某种“浏览器控件”,“顶部”将成为该浏览器控件的顶部,而不是我的网站。

当然,如果您有任何其他想法来实现相同的目标,我们将非常欢迎。


编辑:我已经尝试过 Bill 建议的 Component One 控件,但它不适用于这些目的,因为它在 SilverLight 控件外部创建了一个 IFrame,因此它在与托管 Silverlight 的页面相同的上下文,这是我试图避免的。

【问题讨论】:

  • 作为最终用户,我认为 iFrame 破坏者是一件好事。一方面,它可以防止人们将不同的网站伪装成他们的一部分。允许您嵌入其内容的网站通常具有 API(REST 或 SOAP)以允许您以编程方式进行操作。
  • 我完全理解你的观点,我同意,但我们正在开发一个完整的网站,为用户提供非常有用和非常真实的功能,这意味着让他们与我们的其他网站进行交互地点。我们不会进行伪装、网络钓鱼或类似的事情。
  • 你不会碰巧为一个与无花果押韵的网站工作吧? :)
  • 哈哈!!不,我没有。至少现在还没有,虽然我猜如果我能找到解决方案,我绝对可以给他们发简历 ;-)
  • 我在 2006 年尝试实现相同的功能,但未能从 Flash 或 SilverLight 中找到任何积极的迹象。我试图创建一个搜索/书签网站,它可以作为一种工具,在只有 IE 6 的时候完成当前浏览器所做的大部分事情。虽然我写了一个替代脚本,但对于帧破坏问题[从页面卸载事件调用取消]这可以帮助您阻止浏览器导航到另一个页面,但它不会在框架内加载页面。

标签: silverlight flash browser iframe


【解决方案1】:

Northcode SWF Studio 允许您在 Flash 的舞台上添加浏览器窗口。我个人使用 SWF Studio 作为第三方 SWF2EXE 工具来扩展 Flash 投影仪的功能。它相当稳定和强大。就浏览器控制而言here is 您可以下载并测试它是否符合您的目的的示例。检查浏览器 APT here.

【讨论】:

    【解决方案2】:

    我们还没有构建一个组件来使人们能够做到这一点,但我们愿意接受这里的建议。话虽如此,最简单的解决方案是 iFrame,但请注意,当您将 iFrame 覆盖在 Silverlight 的顶部时,我们会看到客户因此遇到性能问题(主要是由于 iframe 的 alpha 透明度等)。

    这并非孤立于 Silverlight,Flash 遇到的问题与浏览器和给定操作系统中的渲染有关。

    HTH。

    Scott Barnes / Rich Platforms 产品经理 / Microsoft。

    【讨论】:

    • 我不确定这有多可行...这可能完全是白痴...但是另一种方法是在 Silverlight 运行时中嵌入一些轻量级 HTML 渲染器的代码。我猜 WebKit 是一个不错的选择,因为我知道它是轻量级的,尽管我理解这意味着...
    • 另一种选择(同样,这在技术上可能是不可能的)是尝试在插件内创建某种类型的主机浏览器实例。这当然需要特定于浏览器的代码,而且很可能无法做到,我真的不明白 Flash/Silverlight 之类的“插件”如何与它们的主机浏览器交互。
    • 这个概念让我害怕的部分是浏览器 -> 插件 -> 浏览器的这种关系。我想知道人们是否会期望其中有浏览器插件的浏览器插件需要然后加载插件.. O.o
    • 但这是 Scott 的一个很棒的功能。通过这种方式,您可以将所有 UI 渲染保留为 flash 和复杂菜单等所有内容,然后使用 HTML 显示内容。所以它提供了很大的灵活性。坦率地说,我一直在等待 Silver light 发布,看看它是否支持这个功能,我很失望。似乎连 Adob​​e 都没有想过它的强大。我曾多次尝试给您写信,请求此功能,但您似乎忙于营销它:) @Daniel:这正是我想要的......
    【解决方案3】:

    我使用HTML control created by Component One。它的限制是页面中的 Silverlight 对象应设置为无窗口,否则效果很好。

    【讨论】:

    • 只需添加 URL,方便使用:componentone.com/SuperProducts/HtmlHostSilverlight 谢谢,我会调查的!
    • 不幸的是,这个控件不适用于我想要做的事情。它将在承载 Silverlight 控件的 HTML 页面中创建一个 IFrame,并将其放置在 Silverlight 的正上方(这就是为什么 SL 控件需要是无窗口的)。我正在寻找能够创建类似 IFrame 的东西,但它必须 存在于SL 上下文中,从而将其与周围的网站隔离开来。
    【解决方案4】:

    这是一篇旧帖子,但我会添加我的 tupence 答案。我为 Silverlight link text 使用了 DivElements 免费控件,它工作得非常好。它只是准确定位 div,使其看起来像在顶部。

    至于其他此类控件,您必须将 Silverlight 容器的 windowless 属性设置为 true。

    它对我来说非常好用,我可以无缝地让 Google 地图和 Acrobat 插件与我的 Silverlight 应用程序并排显示。

    PS:因为组件只是在页面上添加了一个<div>,所以你不能像在<header>标签中那样让它动态加载Javascript文件。

    PPS:“手动”设置 HTML 代码时,请务必在使用 HTML DOM 之前连接DocumentReady 或Loaded 事件。

    希望对某人有所帮助。

    【讨论】:

    • 根据您的描述,这不是我要找的。我正在寻找可以在插件本身内“托管”“浏览器”的东西。如果这会将 IFrame 添加到托管插件的页面,并放置一些东西以使其看起来不错,它不会为我提供与我正在寻找的“窗口”对象的隔离。
    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多