有人可以向我解释一个或多个有效,可靠的方法,用于打开一个弹出式浏览器窗口,其中包含来自主浏览器窗口的持续更新列表吗?
想象一下,我只想在弹出窗口中显示主窗口中发生的每个鼠标单击事件的一行文本。我知道如何绑定事件处理程序,但我不知道如何打开一个空的弹出窗口,用主页面中的一些内容播种它(例如窗口的标题,上面写着“此处显示的事件!”),然后将HTML内容从主窗口附加到该窗口。
必须有办法做到这一点,我相信我最终可以自己解决这个问题,但也许SO的一些聪明人可以更快地帮助我。谷歌搜索这个主题似乎产生了无数的教程和示例列表,关于如何打开一个包含指定URL内容的弹出窗口,而不是从主页面以编程方式提供的内容。
浏览器阻止弹出窗口的风险似乎也很高,因此任何有关避免浏览器的评论都会受到赞赏。
如果有人愿意提供诸如“永远不要使用弹出窗口!它们总是很糟糕”的评论,只要它们不仅仅是一个火焰就会感到自由,因为显然某些用例是第二个窗口是适当的设备。
感谢大家提前, 布赖恩
答案 0 :(得分:3)
您可以使用此代码:
var mywin = window.open("", "my_popup", "location=0,status=0,scrollbars=0,width=500,height=500");
var contents = "<p>HTML content...</p>";
$(mywin.document.body).html(contents);
$(mywin.document.body).append(contents);
答案 1 :(得分:1)
听起来像AJAX救援。基本上,您希望在弹出窗口中创建一个AJAX可更新的div,并使用JS方法轮询服务器以查看主窗口中是否有对用户事件的更新。如果是这样,获取新数据并使用它刷新div。然后,在后端,您的事件处理程序或加载脚本应该将它们被调用的事实记录到构成弹出数据基础的某个会话存储中。
你究竟是怎么做的取决于你正在使用的网络框架;几乎所有人都可以使用某种AJAX工具包。这是一个相对简单的AJAX用法。
至于绕过弹出窗口阻止程序,使用CSS使弹出窗口显示在页面中而不是作为新的浏览器窗口/选项卡通常可以解决问题;然后你可以在弹出窗口上实现一些GUI元素来折叠它,使它不受影响。或者,只需要求用户配置阻止程序以允许弹出窗口。如果他们信任您的网站(并且值得信任),那就没什么大不了的了。您也可以在一个框架中显示数据,但是使用HTML框架可能会有问题,并且不得不弃用,而是使用CSS来定义使用大小的div的布局。
答案 2 :(得分:0)
我最初的想法是在页面和“弹出窗口”上实现AJAX。
保留用户会话,将其存储在数据库中。跟踪用户在主页面上的操作,AJAX对数据库的操作。在弹出窗口中设置一个计时器,使用AJAX从数据库中提取记录。