c# - 如何让弹出窗口与其来源页面保持相同的逻辑?

标签 c# javascript jquery html

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

最佳答案

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

我从未尝试过的另一种方法是在 html 中嵌入或注入(inject) javascript,该 html 会在允许弹出窗口打开之前复制到弹出窗口中。这是与此相关的答案:Capture new browser window open event with javascript

我认为有更高级的方法,可以在页面中包含一些简单的 Javascript,当弹出窗口打开时,这些方法会从服务器下载必要的文件,但这对于您所描述的内容来说似乎有点矫枉过正。我的 2 美分只是使用 window.open,并使用查询变量告诉服务器要渲染什么。但如果您是一位 javascript 专家,无论如何,请尝试一下。

关于c# - 如何让弹出窗口与其来源页面保持相同的逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9540541/

相关文章:

c# - LINQ to SQL查询将两列相乘并计算SUM

c# - 有没有更有效的方法来获取 C# 中给定日期的前一个星期一

javascript - 与 angular-nvd3 一起使用的 nvd3 是 slooooowwwww

javascript - Mocha 如何执行 'it' 调用?如何同步执行测试?

javascript - 条件在 eventListener 内不起作用

javascript - window.location.hash 返回值前面的散列标签

javascript - 将异步 jQuery Dialog 更改为同步?

c# - 解析字符串 C#

c# - 在 C# 中寻找优雅的 "Dont Show Me This Dialog Again"对话框

javascript - jquery 滚动事件触发在底部