如何让弹出窗口保持与页面相同的逻辑

本文关键字:面相 窗口 | 更新日期: 2023-09-27 18:26:24

我正在创建一个弹出聊天窗口,允许用户将调用脚本从页面弹出到自己的窗口中,这样他们既可以保持该窗口,也可以访问网站的其他页面。我只是从调用脚本中获取html并将其插入到弹出窗口中。问题是,当用户点击、更改选项时,什么都没有发生,因为新窗口没有与其主页相同的文件。我想知道如何将逻辑/功能连接或转移到新窗口?例如,我需要进行一个ajax调用,该调用将进入项目中c#文件中的控制器。有人知道我在说什么以及如何做到这一点吗?

如何让弹出窗口保持与页面相同的逻辑

一种方法是使弹出窗口成为"真实"页面,这样弹出窗口就可以呈现相同的页面,只是没有布局,并且所有的"逻辑"(我认为这意味着包括javascript文件?)都将包含在内。此处不复制HTML,您正在服务器上呈现页面。我不熟悉基于C#的框架/web应用程序,但简单地传递URL查询参数(如"layout=false")是告诉脚本以"普通"布局呈现页面的一种简单方法。这里可能有更优雅的方法。例如,在Sinatra应用程序(Ruby)中,我的路由可以根据路由上的一些后缀来检测要使用的布局类型。例如/app/chat与/app/chat.part。。。通常这样做是为了呈现JSON、与HTML等等。part可以是你想要的任何东西,这取决于你的框架是否允许(你总是可以滚动自己的函数来检查请求变量,而不是那么难)。

另一种我从未尝试过的方法是在允许弹出窗口打开之前,在复制到弹出窗口的html中嵌入或注入javascript。这里有一个与此相关的SO答案:用javascript 捕获新的浏览器窗口打开事件

我认为还有更高级的方法,可以在页面中包括一些简单的Javascript,当弹出窗口打开时,它可以从服务器下载必要的文件,但这似乎对你所描述的来说有些过头了。我的2美分只是使用window.open,并使用查询变量告诉服务器要呈现什么。但是,如果你是一个javascript大师,无论如何,要有想象力。

我不确定我是否完全理解您所描述的内容,但您可以使用localStorage或sessionStorage使用浏览器跨页面保存信息。请参阅此处的解释:在html5中使用localStorage和这里:在HTML5本地存储中存储对象