使用iframe的联合会话历史向后导航

时间:2015-02-01 07:05:15

标签: javascript ios cordova backbone.js browser-history

我正在尝试使用我的应用调试导航问题。问题在于浏览页面上的iframe。

我在SPA cordova应用程序中使用骨干路由器,在iOS上进行测试。我的一些应用程序页面包含加载Web上托管的Web内容的iframe。在浏览器上测试时我没有问题。在iPhone上,我发现向后浏览内容iframe历史记录不会影响iframe当前文档。换句话说,后退按钮不会导致iframe返回。内容没有改变,window.location.href也没有更新。有趣的是,我最终会弹出iframe的历史记录条目并返回应用程序页面历史记录,这就像魅力一样。

使用相同的设置创建一个精简原型但没有我编写的插件和应用程序模块工作得很好。我需要确定,当调用history api时,什么可能导致iframe无法更新其内容,而联合会话历史记录继续适用于父文档

1 个答案:

答案 0 :(得分:0)

此行为是由于包含console cordova plugin(org.apache.cordova.console)而产生的副作用。它的插件意味着重定向控制台输出。

这是实现该功能的一个文件

#import "CDVLogger.h"
#import <Cordova/CDV.h>

@implementation CDVLogger

/* log a message */
- (void)logLevel:(CDVInvokedUrlCommand*)command
{
    id level = [command argumentAtIndex:0];
    id message = [command argumentAtIndex:1];

    if ([level isEqualToString:@"LOG"]) {
        NSLog(@"%@", message);
    } else {
        NSLog(@"%@: %@", level, message);
    }
}

@end

这里没有任何东西看起来像一支冒烟的枪,所以初始化过程中可能还有其他问题需要解决。但是,删除插件会清除副作用,我可以继续前进。

我确实挖掘了一些有趣的文章。 http://khaidoan.wikidot.com/关于向页面添加iframe的细微差别以及影响特定类型的历史记录的技术。并且chromium's implementation用于进程中的iframe。

http://www.chromium.org/developers/design-documents/oop-iframes