java - 如何防止Applet跨网页卸载?

标签 java javascript caching applet

我有一个大型小程序,需要大约 40 秒才能初始化(出租车已缓存,因此请忽略此问题的下载时间)。

问题是,如果用户转到启动小程序(单个窗口)的页面 A,然后导航到页面 B,则小程序将被卸载。如果用户返回页面 A,他们将再次经历 40 秒的初始化时间。

我希望能够启动该小程序,一次且仅一次产生 40 秒的初始化时间。小程序需要驻留在单个浏览器窗口(与我的 Web 应用程序相同的窗口)内。换句话说,我无法在弹出窗口中启动小程序。

有人对如何防止小程序卸载有什么创意吗?

最佳答案

唯一的选择是将您的内容放入包含整个文档的 iframe 中,并为小程序使用绝对定位。

<body>
 <iframe id='content' src='FIRST_URL'></iframe>
 <object id='applet'></object>
</body>

使用像这样的CSS:

#content {
  width:100%;
  height: 100%;
}

#applet {
  position: absolute;
  left: LEFT_POSITION;
  top: TOP_POSITION;
  width: DESIRED_WIDTH;
  height: DESIRED_HEIGHT;
}

有很多缺点:

  • 无论页面如何,小程序都将始终位于同一位置
  • 您将无法获得 iframe 的全宽和全高,尤其是在 IE 中
  • 您也可能会遇到小程序无法正确显示的问题(iframe 顶部的对象,我无法想象您会遇到什么麻烦)
  • 如果您的用户点击了指向您网站之外的链接,除非您为该链接设置了目标(即 target='top' 或 target='__blank'),否则该小程序将会保留

关于java - 如何防止Applet跨网页卸载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/652376/

相关文章:

java - 使用 SWIG 与数组交互的正确方法

java - 读取用户输入

javascript - MeteorJS 发布查询不起作用

javascript - Uncaught ReferenceError : Invalid left-hand side in assignment on bind()

java - 当值引用回键时如何使用弱引用进行缓存?

.net - Asp.Net MVC 3 部分页面输出缓存不支持配置设置

java - Java 中的 eBay Finding API 抛出 'IllegalArgumentException: Not supported: indent-number' 异常

java - 在eclipse中将项目转换为maven后的目录结构

Javascript - 在不修改原始数组的情况下修改数组副本

Java和缓存内存: prefetching and alignment?