如何在新窗口打开链接后使用JavaScript更改href属性
How to change href attribute using JavaScript after opening the link in a new window?
我的页面上有一个链接
<a href="http://google.com" id="mylink" onclick="changeLink();" target="_blank">google</a>
目标是遵循这个链接(在新选项卡中打开)并更改其属性(在上一个选项卡上)。我的意思是,我们打开google。com在一个新的标签,如果我们回头看链接,它是刷新的。
我试过这个js代码
function changeLink(){
document.getElementById("mylink").href = "http://facebook.com";
document.getElementById("mylink").innerHTML = "facebook";
}
但是它也改变了新打开选项卡的目标。在我的例子中,不是打开google而是打开facebook。
有可能修复它吗?
您的onclick
在href之前触发,因此它将在页面打开之前更改,您需要使该函数处理窗口打开:
function changeLink() {
var link = document.getElementById("mylink");
window.open(
link.href,
'_blank'
);
link.innerHTML = "facebook";
link.setAttribute('href', "http://facebook.com");
return false;
}
您可以在点击
后使用setTimeout
延迟代码的执行function changeLink(){
setTimeout(function() {
var link = document.getElementById("mylink");
link.setAttribute('href', "http://facebook.com");
document.getElementById("mylink").innerHTML = "facebook";
}, 100);
}
Replace
onclick="changeLink();"
onclick="changeLink(); return false;"
取消默认动作
您可以在load
页面更改。
我的意图是,当页面来到load
功能时,切换链接(所需链接中的当前链接)
在我自己的例子中,这是一个react代码,我在我的导航链接上使用了一个map方法,而href属性只是把你带到页面中的位置。
<ul className="app__navbar-links">{[
"About",
"Impact report",
"Our programs",
"Resources",
"Blog",
"Free downloads",
"Join community",
].map((item, index) => (
<li className="app__flex" key={index}>
<div />
<a href={`#${item}`} id="nav-link" onClick={handleBlogClick}>
{" "}
{item}
</a>
</li>
))}
</ul>
我需要一个新的标签只在博客导航。set属性打开一个新选项卡,但它不默认为新选项卡的原点,它刷新整个页面。但是这个方法对我很有效。
const handleBlogClick = (event) => {
const navLink = document.querySelectorAll("#nav-link");
if (event.target === navLink[4]) {
const blogNav = navLink[4];
console.log(blogNav);
console.log(event.target.innerHTML);
window.open(
"https://www.linkedin.com/company/ideas-worth-billions/",
"_blank",
"noopener,noreferrer"
);
blogNav.innerHTML = "Blog";
return false;
}
};
例如:
<a href="http://www.google.com" id="myLink1">open link 1</a>
<a href="http://www.youtube.com" id="myLink2">open link 2</a>
document.getElementById("myLink1").onclick = function() {
window.open("http://www.facebook.com");
return false;
};
document.getElementById("myLink2").onclick = function() {
window.open("http://www.yahoo.com");
return false;
};
利用mousedown
侦听器用新的URL位置修改href
属性,然后让浏览器找出它应该重定向到哪里,是否有任何缺点?
到目前为止对我来说工作得很好。想知道这种方法的局限性是什么吗?
// Simple code snippet to demonstrate the said approach
const a = document.createElement('a');
a.textContent = 'test link';
a.href = '/haha';
a.target = '_blank';
a.rel = 'noopener';
a.onmousedown = () => {
a.href = '/lol';
};
document.body.appendChild(a);
}
相关文章:
- 当链接javascript承诺时,如何处理then()函数中的条件
- 如何在grails中链接javascript引导程序方法
- 在PHP代码中单击链接javascript函数调用
- 随机链接javascript以忽略当前页面
- 如何链接javascript承诺和错误
- 在从ruby on rails中的资产管道加载的布局上链接Javascript函数
- 用链接 JavaScript 替换 HTML 的问题
- 突出显示当前链接 Javascript
- 如何在数组中添加超链接(Javascript)
- 有没有一种简单的方法可以在节点上双击 vis.js 创建超链接/javascript-action
- Facebook分享深度链接 - Javascript
- 链接 JavaScript 变量
- 在 AJAX 成功的新选项卡中打开链接 - Javascript
- window.打开一个新页面,然后单击新页面中的链接 - JavaScript
- 链接 JavaScript 函数
- 在 PHP 中链接 Javascript 文件
- 在拖动事件期间禁用链接 Javascript
- 文本框使用 if else 语句打开我的链接 JavaScript
- ajax脚本运行后指向页面的链接(javascript锚点?)
- 动态创建链接Javascript