【问题标题】:How do I open a new tab/window using JavaScript?如何使用 JavaScript 打开新选项卡/窗口?
【发布时间】:2012-02-18 06:03:12
【问题描述】:

目标

我想以 EXACT 与 target="_blank" 相同的方式在新选项卡/窗口中打开 URL。

代码

我正在使用触发以下 JavaScript 的 PHP 条件:

<script type="text/javascript">
window.open ("http://www.google.com/","_blank", "status=1,toolbar=1");
</script>

我的问题

window.open 与 target="_blank" 超链接不同

  1. 它提出了弹出窗口阻止程序的问题。
  2. 窗口需要参数看起来像 target="_blank" 会产生的结果。
  3. 一旦 JavaScript 运行,包含文档的某些字体颜色就会丢失。

我的问题

如何准确模拟 target="_blank" 产生的内容?

【问题讨论】:

  • 你没有。弹出窗口阻止程序每天检查以确保操作是用户发起的,否则它将阻止它。
  • @Ktash:代码变成“用户启动”需要什么?模拟 .click 事件有意义吗?
  • @Travis J:谢谢,但我已经看到了这个问题。它没有说明我概述的第一个差异。
  • 模拟点击不起作用(至少我知道)。您必须在用户实际点击后触发。您将无法使代码“用户启动”。除非您可以“诱骗”用户单击或移动鼠标(不确定这是否可行)或其他方式。

标签: javascript


【解决方案1】:

不是从 JavaScript 打开窗口,而是使用 JavaScript 更新链接的 href,然后触发对链接的点击。这样,您将获得与用户单击链接完全相同的行为。

使用 id 和 target="_blank" 添加指向您页面的链接。当你想打开一个新窗口时,更新这个链接的href然后触发点击,像这样(来自here)。

function clickLink(link) {
var cancelled = false;

if (document.createEvent) {
    var event = document.createEvent("MouseEvents");
    event.initMouseEvent("click", true, true, window,
        0, 0, 0, 0, 0,
        false, false, false, false,
        0, null);
    cancelled = !link.dispatchEvent(event);
}
else if (link.fireEvent) {
    cancelled = !link.fireEvent("onclick");
}

if (!cancelled) {
    window.location = link.href;
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    • 1970-01-01
    • 1970-01-01
    • 2015-04-19
    • 2011-10-29
    相关资源
    最近更新 更多