【问题标题】:Switching between the same two tabs only in a browser using javascript and html仅在使用 javascript 和 html 的浏览器中在相同的两个选项卡之间切换
【发布时间】:2014-01-31 22:26:44
【问题描述】:

我对要做的事情的想法是 当我在 Internet Explorer 浏览器的一个选项卡上打开一个网站并单击一个链接时,它应该在同一个浏览器中打开一个带有 pdf 页面初始化的新选项卡... pdf 页面有很多链接,如果你尝试点击他们中的任何一个他们应该带你回到你设法午餐的旧标签打开pdf并只在这两个标签之间切换 我希望这个想法很清楚..我正在尝试使用 html 和 javascript 来做到这一点......这是我写的,但在这里仍然缺少很多。提前感谢您提供的任何帮助

这里的这件作品在另一个窗口中的另一个瞬间

<html>
<head>
<script>
function son()
{

 myWindow=window.open('','','width=500,height=500');
 myWindow.document.write(" SON !");
 myWindow.focus();
 myWindow.opener.document.write("<p> DAD !</p>");
}
</script>
</head>
<body>

<input type="button" value="Open " onclick="son()" />

</body>
</html>

这个文件是我内置 pdf 文件的地方。

<object data="Test.pdf" type="application/pdf" width="100%" height="100%">

<p>It appears you don't have a PDF plugin for this browser.
you can <a href="Test.pdf">click here to
download the PDF file.</a></p>

</object>

再次感谢

【问题讨论】:

  • 您不能通过 JavaScript 强制切换到不同的选项卡或窗口。
  • 如果打开的页面是网页,您可以使用postMessage 执行类似的操作(但即使这样也不会切换选项卡),但我怀疑它不可能使用 PDF .
  • @zzzzBov 即使我尝试将 pdf 放入 iframe

标签: javascript html internet-explorer


【解决方案1】:

在过去,您可以使用窗口的focus 方法将窗口/选项卡置于前台。然而,滥用(主要是广告商的弹出窗口形式)导致浏览器限制或禁用该功能。

如果我们忽略 PDF 部分,从概念上讲,这是一个非常简单的请求。首先,打开一个窗口并保留它的引用:

var pop = window.open('page.html'); // opens in new tab on most browsers

在二级页面中,切换回原来的页面很简单:

window.opener.focus(); // no longer works in most modern browsers

然后从第一页,切换回来:

pop.focus();  // might work

my test 中,我无法让 IE 9 或 Chrome 21 切换回打开器选项卡。在 Chrome 中,我可以打开第二个页面,手动切换回原来的选项卡,然后调用 pop.focus() 确实使第二个选项卡重新成为焦点。 (IE 什么也没做。)我可以通过从辅助页面调用 window.opener.alert('...'); 来强制 Chrome 回到起始页面,但这是一个丑陋的 hack。

所以看起来你无法完成这个任务,至少不可靠。

我不确定您到底想要完成什么(TOC?),但您是否考虑过打开两个窗口?使用覆盖屏幕左侧的链接打开一个,在另一半使用 PDF 打开另一个。

【讨论】:

  • 你能给我一个简单的 TOC 例子,这样我就可以吸收你试图向我解释的内容,这将是一个很大的帮助,提前谢谢
  • Josh 你提到了关于“开瓶器”的一点,所以它根本不起作用,或者它只是 opener.focus ?再次感谢
  • TOC = 目录。 window.opener 有效(它指向打开当前窗口的窗口的window 对象),但它的focus 方法静默失败。
【解决方案2】:

JavaScript 没有用于控制选项卡的 API。因此,你不能这样做。

您可以打开窗口,但您无法控制它是选项卡还是窗口。

【讨论】:

  • 在框架中添加内容会如何改变 JavaScript 无法控制选项卡的事实?你能说出一个用于切换标签的原生 JavaScript 函数吗?您指的是浏览器选项卡还是您在页面中创建的选项卡?
【解决方案3】:

另一种可能性是不打开第二个窗口或选项卡。 如果您在当前窗口或选项卡中打开另一个/替换页面, 您可以使用 History 对象在两个页面之间切换。

history.go(-1); //takes you back to previous page
history.go(1);  //takes you forward to the page from which you went back.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-21
    • 2014-10-20
    • 1970-01-01
    • 2015-03-19
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多