【问题标题】:popups from embedded .swf cross-browser来自嵌入式 .swf 跨浏览器的弹出窗口
【发布时间】:2008-11-23 19:54:25
【问题描述】:

情况:您在 html 页面中嵌入了一个 .swf,当您单击 .swf 中的某些内容时,它需要弹出一个无镶边窗口。通常这会很容易 - 但考虑一下 Safari,它在启用弹出窗口阻止程序时完全禁用所有“window.open”功能(如果该功能被触发 onclick,它会例外,但它不计算 flash 中的点击次数) .如何为不执行 window.open 的浏览器创建优雅降级(提供替代且大致等效的体验)的东西?

(注意:这是我们所说的 AS3,以及适用于 PC 或 Mac 的 Safari 3 - 但更广泛地说,任何不支持或拒绝允许 javascript window.open 函数的浏览器。)

【问题讨论】:

    标签: javascript actionscript-3 safari popup


    【解决方案1】:

    如果您的 SWF 是使用 wmode='opaque'wmode='transparent' 加载的,那么您可以让 SWF 输出 JavaScript 代码创建一个位于 SWF 区域上方的空 <div>。然后 <div> 可以处理 onclick 事件并创建弹出窗口而不是 Flash 代码。

    【讨论】:

    • 哇。那是胆大的。我喜欢。您必须编写一些花哨的脚本来确保 div 在正确的时间出现在正确的位置,但这听起来是一个不错的解决方案。
    【解决方案2】:

    div 叠加层比项目应得的更复杂 - 查看 code.google.com/p/popupfromflash 了解我想出的代码。

    它尝试使用 ExternalInterface 来设置 window.open 函数,如果失败(特别是在 Safari 中)它会回调到 flash 并提示它执行 navigateToURL 以正常弹出窗口(而不是无色)

    【讨论】:

      猜你喜欢
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-13
      相关资源
      最近更新 更多