Javascript 提示是重复使用现有弹出窗口还是创建新弹出窗口
首先,我要说的是,我对javascript几乎一无所知,除了这种非常罕见的情况外,我并不打算过多地使用它。因此,请原谅我没有尝试了解更多关于它的信息,以便尝试为自己解决这个问题 情况: 我经常喜欢使用弹出式浏览器窗口。为此,我在浏览器中创建了一个书签,其中包含我从某处复制的一小段Javascript(我不记得在哪里),并根据我的屏幕进行了调整:Javascript 提示是重复使用现有弹出窗口还是创建新弹出窗口,javascript,browser,Javascript,Browser,首先,我要说的是,我对javascript几乎一无所知,除了这种非常罕见的情况外,我并不打算过多地使用它。因此,请原谅我没有尝试了解更多关于它的信息,以便尝试为自己解决这个问题 情况: 我经常喜欢使用弹出式浏览器窗口。为此,我在浏览器中创建了一个书签,其中包含我从某处复制的一小段Javascript(我不记得在哪里),并根据我的屏幕进行了调整: javascript:%20var%20WindowPopup%20=%20window.open(window.location.href,'PopU
javascript:%20var%20WindowPopup%20=%20window.open(window.location.href,'PopUp','left=1150,top=830,width=660,height=410,scrollbars=yes,location=no,status=no');
问题:
就目前情况而言,当存在一个现有的弹出窗口时,我再次选择书签,如果我在同一个站点,则会重复使用相同的弹出窗口,否则会创建一个新的弹出窗口。但是,在很多情况下,我想推翻这种默认行为
三个问题:
如果你想避开这种行为,你必须每次创建一个带有唯一名称的弹出窗口 以下bookmarklet代码将在弹出窗口的名称后附加一个时间戳,以创建一个唯一的名称:
javascript:%20var%20WindowPopup%20=%20window.open(window.location.href,'PopUp'+Date.now(),'left=1150,top=830,width=660,height=410,scrollbars=yes,location=no,status=no');
除非您在一毫秒内打开多个弹出窗口,否则此操作应该有效。bookmarklet中的字符串“PopUp”是弹出窗口的名称。如果使用相同的名称创建另一个弹出窗口,则将重新使用已打开的窗口。如果你想避开这种行为,你必须每次创建一个带有唯一名称的弹出窗口 以下bookmarklet代码将在弹出窗口的名称后附加一个时间戳,以创建一个唯一的名称:
javascript:%20var%20WindowPopup%20=%20window.open(window.location.href,'PopUp'+Date.now(),'left=1150,top=830,width=660,height=410,scrollbars=yes,location=no,status=no');
除非你在一毫秒内打开多个弹出窗口,否则这应该是可行的。谢谢Max。这很好,回答了我的第一个问题,这对我来说是最重要的。你能解释一下,为什么在我的原始代码中,如果我将书签从另一个站点选择到第一个站点,会打开第二个窗口吗?这种行为能被推翻吗?我对第三个问题不太在意,因为如果需要的话,我可以很容易地拥有两个单独的书签。浏览器可能会为每个站点保留一个单独的窗口列表。否则,如果example.com与somesite.com共享相同的弹出窗口名称,那么example.com可能会更改somesite.com弹出窗口的内容。这不是期望的行为。这就是为什么YourBookmarklet会在不同的站点上生成一个新窗口。在我看来,这是不可推翻的。要有一个提示询问是创建新的弹出窗口还是回收现有的弹出窗口,您必须使用
prompt
功能并创建一个新的弹出窗口名称,或者根据prompt
的返回值使用以前的弹出窗口名称。您还必须将当前弹出窗口名称存储在不会被覆盖的位置。这很复杂,可能是一团糟。拥有两个单独的书签是非常简单的,而且每次都可以为你节省一次点击。公平地说,我想可能就是这样。提示会是一个很好的提示,不重复使用同一个窗口只是一个小小的不便,但不能为同一个站点打开新窗口是一个真正的痛苦,再次感谢你的帮助,感谢你花时间向我解释。谢谢Max。这很好,回答了我的第一个问题,这对我来说是最重要的。你能解释一下,为什么在我的原始代码中,如果我将书签从另一个站点选择到第一个站点,会打开第二个窗口吗?这种行为能被推翻吗?我对第三个问题不太在意,因为如果需要的话,我可以很容易地拥有两个单独的书签。浏览器可能会为每个站点保留一个单独的窗口列表。否则,如果example.com与somesite.com共享相同的弹出窗口名称,那么example.com可能会更改somesite.com弹出窗口的内容。这不是期望的行为。这就是为什么YourBookmarklet会在不同的站点上生成一个新窗口。在我看来,这是不可推翻的。要有一个提示询问是创建新的弹出窗口还是回收现有的弹出窗口,您必须使用prompt
功能并创建一个新的弹出窗口名称,或者根据prompt
的返回值使用以前的弹出窗口名称。您还必须将当前弹出窗口名称存储在不会被覆盖的位置。这很复杂,可能是一团糟。拥有两个单独的书签是非常简单的,而且每次都可以为你节省一次点击。公平地说,我想可能就是这样。提示会很好,不重复使用同一个窗口只是一个小小的不便,但无法为同一个站点打开新窗口是一个真正的痛苦,因此再次感谢您的帮助,感谢您花时间向我解释。