chrome 中的 Javascript window.print(),关闭新窗口或选项卡而不是取消打印会使 javascript 在父窗口中被阻止

2024-06-19

在我开发的应用程序中,用户可以从几个不同的位置进行打印。在所有这些情况下,我们都使用打开新窗口(或选项卡)的相同工作流程,将需要打印的任何内容写入新窗口的文档,然后调用

    $(w.document).ready(function () {
        w.focus();
        w.print();
        w.close();
    });  

我看到的问题是,在 Chrome 中,如果我关闭为打印预览打开的选项卡或窗口而不是单击取消按钮,Chrome 仍然会阻止我的父窗口上的 javascript。

它与此处描述的问题类似:

在子窗口上打开打印预览时,Google Chrome 会阻止 ajax 请求 https://stackoverflow.com/questions/14462163/google-chrome-blocks-ajax-requests-when-print-preview-is-opened-on-child-window?rq=1

我们也遇到了这个问题,但我相信这是我们在新窗口中实现打印的方式以及 Chrome 的打印预览工作方式的结果。在 IE 和 Firefox 中,打印窗口显示模式对话框,在打印窗口关闭之前,您无法在父窗口中执行任何操作。同样,chrome 会阻止使用父窗口,直到取消打印预览。不过,我希望关闭该选项卡或窗口的效果与取消打印相同。
还有其他人遇到过这个问题或知道好的解决方案吗?

谢谢你!


看来最新的 Chrome 更新已经解决了这个问题...我正在运行 Chrome 版本 36.0.1964.4 dev-m。

我也受到限制,通过执行以下操作来警告用户关闭打印预览窗口:

if(navigator.userAgent.toLowerCase().indexOf('chrome') > -1){   // Chrome Browser Detected?
    window.PPClose = false;                                     // Clear Close Flag
    window.onbeforeunload = function(){                         // Before Window Close Event
        if(window.PPClose === false){                           // Close not OK?
            return 'Leaving this page will block the parent window!\nPlease select "Stay on this Page option" and use the\nCancel button instead to close the Print Preview Window.\n';
        }
    }                   
    window.print();                                             // Print preview
    window.PPClose = true;                                      // Set Close Flag to OK.
}

现在,Chrome 更新后不再出现该警告。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

chrome 中的 Javascript window.print(),关闭新窗口或选项卡而不是取消打印会使 javascript 在父窗口中被阻止 的相关文章

  • 不使用 var 关键字声明变量

    w3schools 上写着 如果声明变量时不使用 var 则该变量始终变为 GLOBAL 在函数内部声明全局变量有用吗 我可以想象在某些事件处理程序中声明一些全局变量 但它有什么用呢 更好地利用内存 不 没有内存优势或类似的东西 w3sch
  • 如何在 JavaScript 中正确初始化 ErrorEvent?

    我需要开火ErrorEvent以编程方式 但无法弄清楚如何初始化事件的属性 这些属性是只读的 并且initEvent 仅初始化事件类型 是否冒泡以及是否可取消 I tried var myErrorEvent new ErrorEvent
  • 在 jsconfig.json 中找不到“import-resolver-typescript/lib”错误

    Problem Error File Users nish7 Documents Code WebDev HOS frontend node modules eslint import resolver typescript lib not
  • 如何在打字稿中将枚举转换为键、值数组?

    var enums 1 HELLO 2 BYE 3 TATA 我希望能够将其转换为如下所示的数组 number 1 word HELLO number 2 word BYE number 3 word TATA 我看到的所有解决方案都形成一
  • 根据id统计div元素

    我有一个类似的页面 div div div div div div div div div div div div 我想知道 id 与表达式 box content X text 其中 X 是数字 匹配的 div 的数量 我可以使用纯 ja
  • 将颜色名称转换为十六进制代码的 Javascript 函数

    是否有一个内置函数可以将颜色按名称转换为其十六进制表示形式 就像我想传递 白色 并接收 FFFFFF 我真的想避免自己编写一百个 if 代码 不 但使用在这里列出 https www w3schools com colors colors
  • 在 JavaScript 中按名字(按字母顺序)对数组进行排序[重复]

    这个问题在这里已经有答案了 我有一个数组 请参阅下面的数组中的一个对象 我需要使用 JavaScript 按名字排序 我该怎么做 var user bio null email email protected cdn cgi l email
  • 循环结束后从头开始重新迭代 for 循环 - JS

    我有一个数组和一个对象数组 我基本上需要将数组的第一个元素映射到数组内对象的第一个元素 依此类推 两个数组的长度都可以是可变的 并且一旦循环结束 循环应该从头开始 但是 我不确定是否再次开始循环 这是我的代码 const colors 7c
  • 通过span标签动态包装js字符串,这可能会在React中危险地渲染

    我有一个字符串 我想使用 aria label 标签将 span 标签单独添加到字母表中 最终结果将在 React 中危险地呈现 请指教 这就是我所拥有的 const str D C B B const addAriaLabels str
  • 谷歌地图 - 缩放时保持居中

    在 Google 地图中 我希望在放大或缩小时能够将地图中心保持在我所在位置的标记上 这是 Ingress 所做的事情 无论您在何处双击 或双击 或在何处捏合 地图都会保持以标记为中心 所以有可能 我现在想到的最好的是 google map
  • selenium webdriver 管理器更新 - npm

    我尝试使用 webdriver manager 更新 selenium webdriver 但出现错误 Error Got error Error read ECONNRESET from https selenium release st
  • Angularjs 中的动态表单名称属性

    当动态创建 inputName 时 人们将如何使用 formName inputName valid
  • 在 Google 地图上显示路径时出现问题

    我有多个经度和纬度点 例如 1 long lat starting point 2 long lat 3 long lat 4 long lat 我的代码如下
  • 通过 Scriptaculous 拖放防止 JavaScript 点击事件

    我的页面上有一些可拖动的元素 这些相同的元素有一个导航到另一个页面的点击事件 我试图确定在用户拖动时防止触发单击事件的最佳方法 但如果不拖动则仍然允许单击事件 有人对实现这一目标的最佳方法有任何想法吗 我通过使用类似以下内容解决了这个问题
  • JS 导入模块并在页面加载时运行

    我想使用 html onload 事件和从另一个 generateObject js 文件导入的 console log 文本来调用我的函数 main 但是当我导入函数时 onload 事件停止工作并且函数 main 不再使用 html 生
  • 将 javascript 对象分配给 html 元素的最佳方法

    我通过 ajax 获取一个 javascript 对象 我需要将此对象附加到 div 以便稍后恢复 例如 在单击事件上 如果我有一个变量而不是一个对象 我会将它推入 html 标签 如下所示 div div 我会像这样恢复它的价值 var
  • 找到每个元素的所有父元素

    我正在尝试创建一个面包屑而不使用 url 路由提供者 并且不使用 jQuery 我有一棵这样的树 Humans Trees Animals Cats Lions Dogs Terrier Bulldog Cocker Cars 我希望当我点
  • 提交ajax表单并停留在同一页面不起作用

    我想将用户的评论存储在我的数据库中 当用户提交时 我不想将他们重定向到新页面 我有以下代码 但它不起作用 我的 HTML 代码
  • 关于调试打印样式表的建议?

    我最近一直在为一个网站制作打印样式表 我意识到我不知道如何有效地调整它 在屏幕布局上工作时有一个重新加载周期是一回事 更改代码 命令选项卡 reload 但是当您尝试打印时 整个过程会变得更加困难 更改代码 命令选项卡 reload pri
  • 通过 XMLHttpRequest 将数据从 JavaScript 发送到 PHP

    再会 我正在尝试将一段简单的数据从一个 php 文件 manage php 发送到另一个 view php 我无法通过表单发送数据 我想通过 JS 脚本发送数据 这是我的尝试 var read function id xmlhttp new

随机推荐

  • C# 中隐式/显式转换方法是否继承?

    我不确定我在这里做错了什么 我有一个通用类 它基本上是一个美化的整数 具有一些用于某些字符串格式设置的方法 以及字符串和 int 之间的转换 public class Base protected int m value From int
  • 如何使用 vb.net 将数据插入 Access 表?

    我想在 Access 数据库中插入一个新行 我正在考虑做类似的事情 oConnection new Connection connectionstring oTable oCennection table Orders oRow oTabl
  • Windows 10 上的 LibPNG 构建问题

    我试图在 Windows 10 上构建 libpng 以获取 win32 二进制文件 但我认为有一个与 awk 解析带有 CRLF 行结尾的文件相关的问题 我尝试使用 dos2unix 命令转换文件 但没有成功 结果相同 在 make 命令
  • 局部变量在栈中的顺序是怎样的?

    我目前正在尝试对缓冲区溢出漏洞进行一些测试 这是易受攻击的代码 void win printf code flow successfully changed n int main int argc char argv volatile in
  • Polly 速率限制过早[重复]

    这个问题在这里已经有答案了 我正在尝试了解 Polly 的速率限制政策 public class RateLimiter private readonly AsyncRateLimitPolicy throttlingPolicy priv
  • 如何使用waf构建共享库?

    我想使用构建一个共享库waf http code google com p waf 因为它看起来比 GNU 自动工具更容易 更简洁 到目前为止 我实际上有几个与我开始编写的 wscript 有关的问题 VERSION 0 0 1 APPNA
  • 如何从Apollo客户端的useQuery获取响应头

    我根本无法找到一种方法来做到这一点 有谁知道这是否支持 谢谢 ApolloClient 发出请求的方法以及使用它们的 React Hooks 充当数据实际获取方式的抽象 它可能来自 HTTP 上的远程服务器 来自缓存 来自直接针对模式执行请
  • Javascript:“new Array(4)”与 Array.apply(null, {length: 4}) 有何不同?

    我想生成一个给定长度的空数组并用一些数字填充它 生成具有四个连续数字元素的数组的一种方法是 var x Array apply null length 4 map function item index return index 但当我看到
  • 多线程环境下如何更好的使用ExecutorService?

    我需要创建一个库 其中包含同步和异步方法 executeSynchronous 等待直到有结果 返回结果 executeAsynchronous 立即返回一个 Future 如果需要 可以在其他事情完成后进行处理 我的图书馆的核心逻辑 客户
  • 数字之和 C++

    我应该编写一个程序 要求用户提供正整数值 该程序应该使用循环来获取总和 从 1 到输入数字的所有整数 例如 如果用户输入 50 循环将求出 1 2 3 4 50 但由于某种原因它不起作用 我的 for 循环遇到了麻烦 但这就是我到目前为止所
  • 使用 EditableText 进行 Flutter

    我正在尝试弄清楚如何在 Flutter 中使用 TextEditor 我有 卡片编辑器 基本上我希望能够处理相当于一段文本的内容 new EditableText autofocus true maxLines null backgroun
  • 动态二维数组非连续内存C++

    假设我将二维数组的地址及其二维数组的行和列传递给函数 该函数会将二维数组的地址视为一维数组 例如 int Matrix 如果我执行下面的代码 int arr arr new int row for int i 0 i lt row i ar
  • 如何访问 Scala XML 中的父元素

    The scala xml包表示带有标记树节点的 XML 但是这棵树在 Scala 2 7 中是单向的吗 因为似乎没有办法访问Elem给定的父级Elem 这似乎同样适用于父母Document 例如 在 XOM 中你有getParent an
  • HTTP POST 操作出现错误代码 302

    我有一个 perl 脚本 它将数据发送到我用 php 编写的 Web 服务 这是代码 use LWP UserAgent my ua LWP UserAgent gt new my server endpoint http example
  • 如何使用 jQuery 拖放文本

    我需要创建一个消息模板 如下所示 你好 Stackoverflow Text A 感谢您的支持 Text B 在这种情况下 我需要使用拖放字段来Textarea 我进行了初步研发 寻找一些库来实现我的要求 并发现了这个通过拖放插入文本 ht
  • 无法运行gradlew

    我已经设置了一个build gradle文件与apply plugin java 我尝试使用说明设置 gradle 包装器here http spring io guides gs gradle 但是当我输入时sudo gradlew bu
  • 检查 Git 中是否需要 pull

    如何检查远程存储库是否已更改并且需要拉取 现在我使用这个简单的脚本 git pull dry run grep q v Already up to date changed 1 但它比较重 有没有更好的办法 理想的解决方案是检查所有远程分支
  • 如何使用 jQuery 在弹出窗口中预览输入类型=“文件”中选定的图像? [复制]

    这个问题在这里已经有答案了 在我的代码中 我允许用户上传图像 现在我想在同一个弹出窗口中将所选图像显示为预览 我怎样才能使用 jQuery 做到这一点 以下是我在弹出窗口中使用的输入类型 HTML 代码
  • ntdll!kifastsystemcallret

    我的程序在执行结束时崩溃 甚至看不到堆栈展开信息 我只能看到这个 ntdll kifastsystemcallret 有人能提供一些线索吗 KiFastSystemCallRet 意味着线程处于系统调用中 x86 NT 系统调用调度的一个不
  • chrome 中的 Javascript window.print(),关闭新窗口或选项卡而不是取消打印会使 javascript 在父窗口中被阻止

    在我开发的应用程序中 用户可以从几个不同的位置进行打印 在所有这些情况下 我们都使用打开新窗口 或选项卡 的相同工作流程 将需要打印的任何内容写入新窗口的文档 然后调用 w document ready function w focus w