如何防止Applet跨网页卸载?

发布于 2024-07-15 08:26:17 字数 279 浏览 7 评论 0原文

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

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

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

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

I have a large applet that takes some 40 seconds to initialize (cabs are cached so ignore download time for this question).

The issue is, if the user goes to Page A which launches the applet (single window) and then navigates to page B, the applet is unloaded. If the user goes back to Page A, they incur the 40 seconds init time once again.

I'd like to be able to launch the applet, incurring the 40 seconds init time once and only once. The applet needs to reside inside a single browser window (the same window as my web application). In other words, I cannot launch the applet in a popup.

Does anyone have any creative ideas around how to prevent the applet unloading?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

掩于岁月 2024-07-22 08:26:17

唯一的选择是将您的内容放入包含整个文档的 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')

The only option would be to put you content in an iframe that encompasses your whole document and use absolute positionning for the applet.

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

With a css like this one:

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

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

There are MANY drawbacks:

  • The applet will always be positionned at the same place, no matter the page
  • You will suffer to get the iframe full width and full height, especially in IE
  • It's possible you will also suffer to have the applet showing properly (an object on top of an iframe, I can't imagine what troubles you'll run into)
  • The applet will stay if your user click to a link leading outside of your site unless you set a target for the link (ie, target='top' or target='__blank')
七色彩虹 2024-07-22 08:26:17

您可以这样显示警告:

if(window.body)window.body.onbeforeunload=function(){if(window.event)window.event.returnValue="UNLOAD MSG";};else window.onbeforeunload=function(){return "UNLOAD MSG";};

这适用于几乎所有浏览器,但您无法更改文本周围的文本。

You could show a warning, this way:

if(window.body)window.body.onbeforeunload=function(){if(window.event)window.event.returnValue="UNLOAD MSG";};else window.onbeforeunload=function(){return "UNLOAD MSG";};

This works in allmost every browser, but you cannot change the text surrounding your text.

〗斷ホ乔殘χμё〖 2024-07-22 08:26:17

将 Applet 放入不会卸载的框架中,或阻止用户转到包含 Applet 的网页中的另一个页面。

Put the Applet in a frame that doesn't unload, or prevent the user from going to another page in the web page that contains the Applet.

一刻暧昧 2024-07-22 08:26:17

我想也许有一种方法可以弹出一个小浏览器窗口并在其中加载小程序,然后使用 Javascript 以某种方式将小程序从较小的窗口拉入较大的浏览器。

但我不认为我可以用这种方式操纵 DOM。

还有其他想法吗?

I thought maybe there'd be a way to popup a tiny browser window and have the applet load in that, then using Javascript somehow pull in the applet from the smaller window into the larger browser.

I don't think I can manipulate the DOM in this way though.

Any other ideas?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文