我可以引用与我目前在JavaScript中不同的窗口吗? [重复]

问题描述 投票:1回答:3

假设这个html文件只有一个按钮。

在JavaScript文件中(添加到html文件中),jQuery用于为按钮提供单击功能并执行:

window.open('some-url');

此代码在新页面中打开URL,但我希望能够对该页面执行任何操作,无论是关闭它还是将其滚动到某个位置。

我想到这样做:

var web = window.open('some-url');
web.scrollTo(0,400);

但是,这段代码不会在新打开的链接中滚动到400的y位置。有没有办法可以让'窗口'不是'this'而是some-url窗口?

javascript jquery window.open
3个回答
0
投票

最简洁的答案是不。

答案很长,因为如果你可以在另一个网站上执行脚本,这将是一个巨大的安全漏洞。大多数网站将重要的内容部分与跳转链接https://blog.hubspot.com/marketing/jump-link-same-page相关联。

基本上该网站有一个带有ID属性的锚标签,该ID属性可以在网址中引用,如https://www.some-ur.com/test#jump-to-id

似乎window.open确实支持第三个参数,你可以在其中指定一个顶部值以及https://www.w3schools.com/jsref/met_win_open.asp


0
投票

使用简单锚标记

id="abc"
<a href="#abc"></a>

用Javascript

当前窗口

这个很容易。窗口将始终引用当前窗口。新的弹出窗口

如果您使用窗口打开一个窗口。打开,您将获得对您打开的窗口的引用。

var newWin = window.open('https://www.google.com', 'windowName');

现有的弹出窗口

如果有人用window.open打开了一个弹出窗口,并且你知道他们使用的窗口名称,你可以通过调用window来获取该窗口的句柄。打开时不使用空字符串作为URL,并使用相同的名称。

var existingWin = window.open('', 'windowName');

如果弹出窗口是从同一域上的不同帧打开的话,这甚至可以工作。

在现代浏览器中,如果窗口是从不同域上的不同帧打开的话,这甚至可以工作。但要注意 - 这可能会导致IE中出现一些奇怪的行为。

弹出Windows,因为它们打开

如果您正在编写库并且需要保留由任何其他库或javascript代码打开的弹出窗口集合,则可以使用修补程序window.open:

var windows = [];

var winOpen = window.open;

window.open = function() {
    var win = winOpen.apply(this, arguments);
    windows.push(win);
    return win;
};

0
投票

首先,你为什么要那样做?

其次,您在400 y位置引用的页面上是否有内容?我知道这个问题听起来很愚蠢,但我不得不问b / c它对我有用。

复制/粘贴这个:

<!DOCTYPE html>
<html>
<body>

<p>Click the button to open a new window called "MsgWindow" with some text.</p>

<button onclick="myFunction()">Try it</button>

<script>
function myFunction() {
  var myWindow = window.open("", "MsgWindow", "width=200,height=600");
  myWindow.document.write("<p>This is 'MsgWindow'. I am 200px wide and 900px tall!</p><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />p");
  myWindow.scrollTo(0,400);
}
</script>

</body>
</html>

对此:https://www.w3schools.com/jsref/met_win_open.asp

© www.soinside.com 2019 - 2024. All rights reserved.