在iPad上打印FullCalendar
FullCalendar print on iPad
我已经断断续续地完成这项任务一段时间了,试图找到一个最佳解决方案(除了告诉用户禁用弹出窗口阻止),但我被难住了。
本质上它是如何工作的(我省略了代码,因为有很多它和适当的信息):
我有一个在angular中实现的angular应用程序,它利用了我想要打印的内容fullcalendar.js。在我的角度控制器里,我有管理日历本身的jQuery(请不要用尺子打我的手指:)
当我想打印日历时,我想要一组特定的样式,所以我有一个指令来准备要移植的所有内容,然后使用用于所有打印活动的统一角度工厂。这个统一工厂打开了一个新窗口,其中包含我想要的所有新样式,并通过回调"清理"HTML,在我的情况下,我使用它将日历的HTML内容移植到新窗口。
所以流程基本是这样的:用户点击打印按钮->调用日历打印指令中的点击事件,指令调用工厂。->Factory打开一个新窗口,并通过指令的回调来移植内容,然后调用JavaScript的print()来打印窗口。
我遇到的问题是:打印在PC和Mac上运行良好,但在iOS safari上,窗口不会弹出。我发现这个问题是因为iOS Safari要求所有新窗口弹出窗口都在点击事件中。
为了解决这个问题,我想我会对统一工厂添加一些修改,以适应我的情况:我会在指令的点击事件中打开一个新窗口,然后将该窗口的引用传递到工厂,工厂可以使用该引用将html内容添加到其主体中。这给iOS Safari带来了另一个问题,即如果子窗口打开,它会暂停父窗口的javascript执行,因此一旦打开新窗口,HTML的生成和工厂的调用就会暂停,直到用户切换回父选项卡。这就是我被难住的地方。有什么解决这些问题的建议吗?或者我会一直告诉用户禁用弹出窗口阻止吗?
打开新窗口后,HTML和工厂的电话被叫停了。。。
你能更改吗,以便在打开新窗口之前生成HTML和工厂调用?否则,听起来你需要避免弹出窗口。
如果要在同一窗口中显示另一个视图,请使用ngInclude。您可以选择切换ngInclude的路径以交换HTML,或者与ngShow组合以在用户单击时显示和隐藏正确的部分。
听起来像是将工厂用作父作用域,如果是这样,则应将其转换为控制器,作为不同视图上方的全局作用域。
如果这是在正确的轨道上,我可以做一个砰的一声。
此外,如果您想寻求最佳实践,请查看完整的日历ui以获取预制指令。
祝你好运!
在一个月的时间里,我经历了大约3次,终于明白了。
在准备打印内容的指令中,我生成了一个新的日历,然后在文档中调用其余的代码(包括打开新窗口的工厂)。就绪。将代码置于就绪复选框中似乎会导致iOS Safari认为它不再直接位于点击事件中,因此有时会阻止新窗口弹出。删除document.ready检查似乎已经使其工作,并且对其他浏览器没有不良影响。
我决定在指令中为工厂调用创建一个函数,并在文档中调用。如果不是iOS,请准备,否则只调用它,以保留桌面浏览器的功能。
- 使用javascript将动态表从一个html页面打印到另一个html页
- JavaScript打印功能使日历停止工作
- esri javascript异步打印
- 文本框不是从Javascript/Asp.net中的对话框中打印出来的
- jQuery/JavaScript在线公文包表单-打印样式表
- 如何打印嵌套对象的所有值
- 在终端中运行 JavaScript 时(使用 rhino),如何使用 print() 函数在一行中打印
- 打印预览没有应用程序页眉和页脚的html表格
- 正在打印图表上的文本
- Rhino打印功能
- 在通过child.print()打印之前,我如何等待图像加载到我的新窗口中
- 如何用javascript打印php数组
- Javascript,从静态函数中打印全局对象
- 试图打印/调用/或提醒数组中的对象:Getting Undefined
- 为Fullcalendar中的特定时段设置不同的颜色
- 按压“;输入“;将值打印到控制台日志
- 将数组的拼接分配给自身时,Javascript控制台打印不起作用
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- FullCalendar:事件发生时阻止重叠.标题是一样的
- 在iPad上打印FullCalendar