BuildFire应用Flash横幅点击跳转外部浏览器的实现咨询
BuildFire横幅点击跳转外部浏览器解决方案
问题根源
你当前用iframe嵌入横幅,点击后链接会在应用内置WebView中打开,而BuildFire的内置WebView没有完善的返回机制,导致用户被卡在页面里。要解决这个问题,必须调用BuildFire官方API唤起系统外部浏览器(Safari/Chrome)打开落地页。
解决方案分两种场景:
场景1:横幅固定跳转单一落地页
直接给iframe套一个可点击容器,绑定点击事件调用BuildFire的openWindow API,指定用外部浏览器打开:
<!-- 用div包裹iframe,添加点击事件 --> <div onclick="openExternalLink()" style="cursor: pointer; display: inline-block;"> <iframe scrolling='no' frameBorder='0' style='padding:0; margin:0; border:0;' width='800' height='800' src="http://urlremoved"></iframe> </div> <script> function openExternalLink() { // 替换成你的实际落地页URL buildfire.navigation.openWindow("http://你的落地页地址.com", "_system"); } </script>
关键说明:
_system参数是核心,告诉BuildFire唤起系统默认外部浏览器,而不是应用内WebView- 把这段代码直接替换你当前在「源码按钮」里的iframe代码即可
场景2:iframe内有多个动态跳转链接(仅适用于你自己可控的iframe页面)
如果iframe里的内容是你自己的页面,可在iframe页面中拦截所有链接点击,强制用外部浏览器打开:
// 在iframe的页面代码中添加这段脚本 document.addEventListener('click', function(e) { const link = e.target.closest('a'); if (link && link.href) { e.preventDefault(); // 阻止默认的应用内跳转 // 调用父页面的BuildFire API打开外部浏览器 window.parent.buildfire.navigation.openWindow(link.href, "_system"); } });
注意:这种方法要求iframe页面和BuildFire应用同域,否则会因跨域限制无法调用window.parent.buildfire。
常见错误排查
之前调用buildfire.navigation.openWindow失败,大概率是这两个原因:
- 没加
_system参数,默认会在应用内打开 - 代码没放在
<script>标签中,或者位置不对(必须放在HTML代码的合适位置,比如body末尾)
内容的提问来源于stack exchange,提问作者Slh
相关产品推荐
相关产品推荐

