ChatGPT解决这个技术问题 Extra ChatGPT

在同一窗口和同一选项卡中打开 URL

我想在同一窗口和包含带有链接的页面的同一选项卡中打开一个链接。

当我尝试使用 window.open 打开链接时,它会在新选项卡中打开,而不是在同一窗口的同一选项卡中打开。

您可能需要查看此 post 以了解以下建议方法之间的差异,例如“相似”的 _self_top

A
Anton Sutarmin

您需要使用名称属性:

window.open("https://www.youraddress.com","_self")

编辑: URL 应该以协议开头。没有它会尝试打开相对 url。在 Chrome 59、Firefox 54 和 IE 11 中测试。


第二个参数只是新窗口的名称,就像标签 a 的属性 target=。事实上,您可以随意命名您的窗口。您所需要的只是将其设置为不同的值,这样它就不会在同一个窗口或选项卡中打开。
@ijse 实际上,有一些特殊的名称,其中之一是“_self”,它指的是代码正在运行的 win/tab。;)
'_self' 未在 MDN [developer.mozilla.org/en-US/docs/Web/API/Window/open] 文档 on window.open() 中指定。一个更跨浏览器的解决方案是使用 location.replace()。
上面评论中的 MDN 链接自动链接到 404。链接是 developer.mozilla.org/en-US/docs/Web/API/Window/open
_selfHTML5 W3C 建议 2014 年 10 月 28 日5.1.6 浏览上下文名称 部分中提到:w3.org/TR/html/browsers.html#browsing-context-names(但 window.location 仍然更简洁)。
D
Dave L.

用这个:

location.href = "http://example.com";

这比 window.open 更受欢迎(每个 stackoverflow.com/questions/4813879/…
airbnb linter 不喜欢 location.herf。开头提到window是必须的。
a
andromeda

为了确保链接在同一个选项卡中打开,您应该使用 window.location.replace()

请参见下面的示例:

window.location.replace("http://www.w3schools.com");

来源:http://www.w3schools.com/jsref/met_loc_replace.asp


它不保留浏览历史记录,我们不应该使用它。改为尝试 window.open("google.com","_top") 参考链接 geeksforgeeks.org/…
我将它用作内部页面的内部插件的一部分,它非常完美。浏览器历史记录并不是真正的问题,因为它用于自动化,使用它的人无需手动访问任何页面。感谢您的片段!
T
Tom Berthold

您可以在不指定 url 的情况下将其转到同一页面:

window.open('?','_self');

那不是同一页。它将从现有 URL 中删除任何查询字符串。
M
Magesh

如果您的页面在“框架”内,则“Window.open('logout.aspx','_self')”

将在同一框架内重定向。所以通过使用

"Window.open('logout.aspx','_top')"

我们可以将页面加载为新请求。


M
Muaz Khan

最突出的 javascript 功能之一是动态触发 onclick 处理程序。我发现以下机制比使用 location.href=''location.reload()window.open 更可靠:

// this function can fire onclick handler for any DOM-Element
function fireClickEvent(element) {
    var evt = new window.MouseEvent('click', {
        view: window,
        bubbles: true,
        cancelable: true
    });

    element.dispatchEvent(evt);
}

// this function will setup a virtual anchor element
// and fire click handler to open new URL in the same room
// it works better than location.href=something or location.reload()
function openNewURLInTheSameWindow(targetURL) {
    var a = document.createElement('a');
    a.href = targetURL;
    fireClickEvent(a);
}

上面的代码也有助于打开新标签/窗口并绕过所有弹出窗口拦截器!!!例如

function openNewTabOrNewWindow(targetURL) {
    var a = document.createElement('a');
    a.href = targetURL;

    a.target = '_blank'; // now it will open new tab/window and bypass any popup blocker!

    fireClickEvent(a);
}

D
DarckBlezzer

打开另一个网址,例如点击链接

window.location.href = "http://example.com";

J
Jeffrey Zhao

您必须使用 window.open 吗?使用 window.location="http://example.com" 怎么样?


i
ijse

window.open(url, wndname, params),它有三个参数。如果您不希望它在同一个窗口中打开,只需设置不同的 wndname。如 :

window.open(url1, "name1", params); // this open one window or tab
window.open(url1, "name2", params); // though url is same, but it'll open in another window(tab).

以下是关于window.open()的详细信息,您可以信任它!
https://developer.mozilla.org/en/DOM/window.open

试试看~~


问题很明显是要在同一窗口和同一选项卡中打开!
x
xgqfrms

使用 _self 在当前标签页中打开 url

const autoOpenAlink = (url = ``) => { window.open(url, "在同一个标签页中打开测试页"); } 打开网址在当前标签页中使用 `_self`

使用 _blank 在新标签页中打开 url

const autoOpenAlink = (url = ``) => { window.open(url, "在新标签页中打开测试页"); } // ❌ 错误是由 `StackOverflow` 限制引起的 // js:18 阻止在新窗口中打开 'https://cdn.xgqfrms.xyz/index.html' 因为请求是在沙盒框架中发出的,其'allow-popups' 权限未设置。 打开网址使用 `_blank` 的新标签页

参考

根据 MDN 的文档,您只需要提供一个新窗口/选项卡的名称。

https://developer.mozilla.org/en-US/docs/Web/API/Window/open#Syntax


您无法可靠地知道当前窗口的名称。最好遵循 this 2011 answer 的建议并使用特殊的 _self 名称。
你的第一个例子是错误的。 _blank 明确地是一个未命名的新窗口或选项卡。
一点也不!如果我设置_self,它将在当前页面打开,这对我不利,我只需要一个新页面。
问题不在于你需要什么!如果您想回答有关您需要什么的问题,那么请找到一个要求该问题的问题。
A
Adi Prasetyo

对于 html 5,您可以使用 history API

history.pushState({
  prevUrl: window.location.href

}, 'Next page', 'http://localhost/x/next_page');
history.go();

然后在下一页上,您可以像这样访问状态对象

let url = history.state.prevUrl;
if (url) {
  console.log('user come from: '+ url)
}

t
thanglv

就像这样window.open("www.youraddress.com","_self")


S
Sarjan Desai

这很容易。以 window.open(url, <tabNmae>) 身份打开第一个窗口

示例:window.open("abc.com",'myTab')

对于接下来的所有 window.open,使用 same tab name 而不是 _self_parent 等。


S
Siddharth Shukla
   Just Try in button.

   <button onclick="location.reload();location.href='url_name'" 
   id="myButton" class="btn request-callback" >Explore More</button>

   Using href 

  <a href="#" class="know_how" onclick="location.reload();location.href='url_name'">Know More</a> 

触发当前页面的重新加载然后通过加载新页面在下一条语句中取消它根本没有意义。
I
I-am-developer-9

你可以做

window.close();
window.open("index.html");

它在我的网站上成功运行。