【问题标题】:PopUp to open a link and close itself弹出窗口打开链接并自行关闭
【发布时间】:2020-04-23 14:16:23
【问题描述】:

我设置了一个弹出窗口,为访问者提供两个链接的选择。如果单击任何一个链接,我希望(1)弹出窗口自行关闭,(2)所选链接在新窗口中打开。 What occurs now when one of the two offered links is chosen is (1) the popup closes itself and (2) an empty new window opens.如何让所选链接显示在新窗口中? 谢谢。

这是我写的代码:

在主窗口的 HEAD 中:

    function OpenQuick() 
    {
    var windowcontents = "https://myurl.com/quicklink.html";
    var win =window.open(windowcontents,"remote",'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0,width=450,height=425');
win.creator=self;
myWindow.focus();
}

在主窗口的正文中:

    <a href="javascript:OpenQuick();"><img src="https://www.myurl.com/images/link.gif"></a>

在弹出窗口中:

    <a href="choiceone.html" target="_blank" onclick="self.close();">First Choice</a>
    <a href="choicetwo.html" target="_blank" onclick="self.close();">Second Choice</a>    

【问题讨论】:

  • 这很棘手。我想知道这种方式是否会更好 - 给目标一个真实的名字,比如 target="mynewquickielink" 什么的。不是 _xxx 目标值。仍然在弹出窗口中,onclick 应该是“newRoutine();”您不必再拥有 javascript: 了。然后在 newRoutine() 中,您可以使用 setTimeout 在延迟后调用 self.close()。我在想事情进展得太快了,你想稍后关闭。可能有帮助!
  • 谢谢。首先,我需要说,虽然我对 HTML 有很好的了解,但我对编写 Javascript 还是很陌生。我不认识“newRoutine()”所以我不知道如何放置它,但是按照你的部分建议,这是我在弹出窗口中写的: 修订一 它在 Firefox 和 Internet Explorer 的 Mac OS10.15 以及 Firefox 和 Chrome 的 Windows10 上完美运行。但是在 Windows 上,Internet Explorer 在弹出窗口中而不是在新的空白窗口中打开链接。
  • 你建议给目标一个真实的名字,比如 target="mynewquickielink" 这可能会解决 Internet Explorer 中的 Windows 问题,所以我想使用它。但是,如果我设定了目标,那么我将如何指定“mynewquickielink”实际上是一个新的空白窗口?
  • 糟糕!我应该说:它在 Firefox 和 Safari(不是 Internet Explorer)的 Mac OS10.15 以及 Firefox 和 Chrome 的 Windows10 上完美运行。但是在 Windows 上,Internet Explorer(现在称为 Edge?)会在弹出窗口中而不是在新的空白窗口中打开链接。
  • 最新的 Internet Explorer 是 11,大约在 2013 年发布。它仍然存在,未重命名。还有一个 Edge,有两种风格,后一种是基于 webkit 的。当然,是否要支持 IE11 取决于您。在我的工作中,我们拥有我认为是第一世界国家(可能低于大多数第二和第三世界国家!)的任何用户群中技术水平最低的东西,并且我们前一段时间已经放弃了对 IE11 的支持。但我离题了。

标签: javascript html


【解决方案1】:

如果这可能会有所帮助。我不建议对 OpenQuick() 进行任何更改:

function OpenQuick() {
  var windowcontents = "https://myurl.com/quicklink.html";
  var win=window.open( windowcontents, "remote", "(whatever)");
  win.creator=self;
  myWindow.focus();
}
<a href="#" onclick="OpenQuick();"><img src="(someimage)"></a>

在新/弹出窗口中-

    <a href="choiceone.html" target="anyname" onclick="newRoutine();">Choice1</a>
    <a href="choicetwo.html" target="anyname" onclick="newRoutine();">Choice2</a> 

在该弹出窗口中使用 javascript 定义 newRoutine -

function newRoutine () {
  setTimeout( function () { self.close(); }, 1000); // 1000 is in ms = 1s
}

这个想法是在尝试关闭之前给弹出窗口一些时间。

【讨论】:

    【解决方案2】:

    Yishmeray,您写道,“以防万一这可能会有所帮助”!它不仅有帮助,您的解决方案还回答了我的问题并解决了我的问题! 我敦促任何有类似问题的人尝试根据他们的情况调整 Yishmeray 的建议。这很简单,很容易理解,而且很有效! Yishmeray,谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      • 2012-06-03
      相关资源
      最近更新 更多