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

joint session history backward navigation with iframes

本文关键字:iframe 导航 使用 记录 会话 历史      更新时间:2023-09-26

我正在尝试调试我的应用程序的导航问题。问题在于向后导航页面上的 iframe。

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

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

此行为是包含控制台 cordova 插件 (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 对进程外 iframe 的实现。

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