问题标签 [window-object]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1094 浏览

angular - 如何在新窗口中打开一个url,然后触发ctrl + p(打印)?

我在 div 中有 iframe 并有一个打印按钮,单击打印时我想打开一个新选项卡并触发 iframe 中显示的 url 的打印操作。我正在使用 Angular 7。

到目前为止我尝试过的解决方案:

如何使用打印命令打开链接新标签?

html

组件.ts

解决方案从angular2 组件内的 iframe,“HTMLElement”类型上不存在属性“contentWindow”?

使用上述解决方案时出错:

错误 DOMException: 阻止具有源“ http://localhost:4200 ”的框架访问跨域框架。

我有一个 url,我只想在新选项卡中打开它并打印而不点击 Ctrl+p

提前感谢您的帮助!

0 投票
2 回答
8472 浏览

angular - router.navigate 中的 {skipLocationChange : true} 不起作用;改变状态

我正在尝试在 JSP 页面上嵌入 Angular 应用程序,出于某些原因,我需要浏览器来保留状态并且不希望 Angular 将新状态推送到浏览器历史记录。

根据Angular 文档 { skipLocationChange: true },我可以这样做。下面是我修改后的代码。

Angular 仍然在浏览器历史中推动新的历史状态。

下面是控制台快照。

在此处输入图像描述

路由代码有什么问题吗?或者我缺少任何参数。

0 投票
1 回答
43 浏览

javascript - 这。引用 Object 而不是 Window-Object

我有一个如下所示的对象。

在第 6 行,我写了console.log(this.title, elem).

现在根据我了解到的情况。-Keyword,this.title这里不应该引用当前的Object,而是全局的Window-Object。现在与我的知识相反,this.title似乎正确引用了视频对象的属性。

这是浏览器显示的内容:

我想,既然console.log(this.title, elem)在回调函数内部,就会引用全局窗口对象。这篇文章证实了我this.title应该实际引用全局对象的概念。

有人可以解释一下吗?

0 投票
1 回答
139 浏览

javascript - 在线游戏机器人性能

我正在为在线动态游戏创建机器人。在这种情况下,动态意味着游戏中的英雄可以四处移动,并且在移动时背景会发生变化。像这样的全局变量monsters在移动时也会动态变化。

我的机器人正在使用 puppeteer。因为我需要这个怪物对象,所以我有每 2-3 秒从页面上下文中获取这些怪物的功能(随机化以进行反检测)。

这个解决方案远非完美。两个主要缺点是:

  • 我的机器人杀死怪物,我想去下一个它仍然看到这个怪物已经被杀死,因为下一次刷新是从那个时间点开始的例如 1500 毫秒。
  • 获得怪物的性能很差。

为了解决第一个问题,我可以执行每次杀死一个怪物后下载怪物的功能。另一方面,第二个不利因素将更加强烈,因为我将执行更多的获得怪物,这已经很慢了。

这一切都涉及到第二个问题,即性能。你可能会问我怎么知道性能不好?

当英雄移动时,它相对平稳,但是当下载怪物时,我看到了微滞后,就像第二个英雄停止的一部分。确实可能有 100 毫秒的延迟,但我可以用肉眼看到它,如果我更频繁地获得怪物,这种延迟会变得更强(要明确 - 延迟不会更长,而是更频繁)。

从全局窗口下载对象很长。游戏维护者开发它的原因是monsters在包含仪表板中的所有内容甚至包含空元素的大对象npc中,因此该对象的总量npc在 100k-200k 元素之间。我正在做很多过滤器以获得我关心的最终怪物数据。

我将展示我是如何真正得到这些怪物的。所以我执行了 3 个异步函数:

第一个getAllNpc只是获取整个 npc 对象(我上面提到的这个大对象)

第二个函数过滤我想从 npc 杀死的实际怪物和怪物:

我在Set这里使用来摆脱 O(n) / O(n^2) 算法,我认为这是我用 javascript 可以实现的最快的。第三个功能与此相同,但另外过滤了我想避免的特殊怪物。

现在我的问题是:

  • 有没有办法在每个 this 对象上获取这个对象并且只有这个对象改变?我知道 puppeteer 中有可以监视 DOM 更改的功能,但是有什么可以监视全局窗口对象吗?
  • 我还能做些什么来加快速度吗?我在 NodeJS 中读到过worker_threads,它可以帮助摆脱这种微滞后或其他什么吗?聚类?
0 投票
0 回答
201 浏览

javascript - 在浏览器中暴露全局对象有哪些安全风险?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Strict_mode#Securing_JavaScript

请参阅该页面的“保护”JavaScript 部分。

在浏览器中公开全局对象是什么意思?全局对象不是窗口本身吗?不是一直暴露在外吗?

在此之前,他们提到了这一点

“现在一些网站为用户提供了编写 JavaScript 的方式,这些 JavaScript 将由网站代表其他用户运行。浏览器中的 JavaScript 可以访问用户的私人信息,因此此类 JavaScript 在运行之前必须进行部分转换,以审查访问禁止的功能”。

这些情况是特定的吗?

0 投票
0 回答
144 浏览

javascript - 在 React APP 上将 HTML 脚本附加到 DOM

我正在开发一项功能,该功能允许我们的用户嵌入其他服务脚本,以在使用 react.js 运行的市场上执行

下图描述了 Textarea 用户添加他们的脚本(只是为了丰富) 在此处输入图像描述

我遇到了使用窗口加载事件(attachEvent、addEventListener 等)的某些脚本的问题。

我认为这里的问题是在页面加载后执行的脚本和 window.onload 之后从未调用过。

我正在接收脚本并将脚本标签提取为文本,然后将它们转换为有效的 HTML 脚本节点

下面的代码解释了这个过程

  1. 项目清单

有什么想法吗?

0 投票
2 回答
278 浏览

angular - Angular:当我将鼠标移出组件时不再触发事件侦听器

我的 Angular 应用程序中有一个上下文菜单,我想在该上下文菜单打开时按下一个键时触发回调。我在上下文菜单的构造函数中添加了以下代码:

如果我打开上下文菜单,将光标悬停在它上面,然后按一个键,它会成功触发此回调。但是,如果我将鼠标移出菜单,当我按下一个键时它不再触发它。此外,即使我将鼠标移回菜单上,它仍然没有响应。无论光标在哪里,只要上下文菜单打开,我都希望它在我按下一个键时做出响应。

有任何想法吗?

0 投票
1 回答
855 浏览

node.js - 如何访问节点包中的窗口

这些天来,许多 npm/node 包不仅在 node.js 上使用,而且在 web 上也使用,使用诸如webpackor之类的工具rollup

我正在创建一个我想在网络上使用的包。如何访问window浏览器提供的全局对象?

是否有一些包可以将这个对象暴露给我?

0 投票
0 回答
32 浏览

javascript - 如何从 performance.window.performance.timing 输出中获取性能 KPI?

尝试使用 puppeteer 框架获取 UI 性能 KPI,我有以下脚本

上面这段脚本的输出是:

如何从上述输出中获取以下 KPI:

  1. 标题时间
  2. 开始渲染的时间
  3. 互动时间
  4. DNS查询时间
  5. 连接时间
  6. 第一个字节的时间
  7. 到最后一个字节的时间
  8. 整体等待
0 投票
0 回答
611 浏览

reactjs - 如何从“window”对象中检索数据 - React?

我是 ReactJS 的超级新手。我正在尝试将第三方脚本文件分配给我的 Window 对象,如下面的代码在我的 componentDidmount 方法中。

从上一个控制台日志中,我得到了包含第三方脚本数据的完整窗口对象。但接下来我尝试在上述代码之后的同一组件中将该数据设置为我的状态,如下所示。

但状态分配为未定义。我也尝试使用 Helmet 和 script-tag npm。我觉得我做得不对。如何从窗口对象中检索数据?谢谢 完整的组件