我正在编写一个JavaScript脚本,可以从中检测当前站点中的用户活动。因此,在该站点中,用户可以单击将其扔到带有链接的新选项卡的框。 该链接是动态的。
我需要在我的数据库中记录该链接,该链接在新选项卡中打开,而且我也不知道它是通过单击还是任何其他函数打开的。在我的情况下,单击按钮然后再调用一个函数通过链接打开窗口标签。即在该函数上单击window.open(data.link)
从当前页面打开新标签页时,是否有任何方法可以调用函数?
更新
以下答案确实帮助我跟踪了与目标 _blank 的链接,但是当目标不存在时它没有用。另外,就我而言,我决定选项卡也将从功能中打开,因此我通过覆盖window.open函数即
来解决该问题 window.open = function(url, name, features, replace) {
alert("opening a window");
// do other stuff here}
只要从window.open函数打开新标签页,就会调用此事件!
希望它对其他人也有帮助!
答案 0 :(得分:1)
使用JavaScript将EventListener添加到所有a
元素中。
如果元素具有target="_blank"
,或者按下了快捷键,例如ctrl
,则可以放心地假设单击的链接将在新的标签/窗口中打开。
event.target.href
是您需要使用AJAX添加到数据库中的URL。
// loop all `a` elements, adding click event listeners
document.querySelectorAll("a").forEach(element => {
element.addEventListener("click", event => {
// is `target="_blank"`
const isTargetBlank = event.target.target === "_blank";
// is shortcut key held
const isShortcutKeyPressed = event.ctrlKey || event.shiftKey || event.metaKey;
// If target is blank or shortcut key pressed or middle mouse button pressed
if (isTargetBlank || isShortcutKeyPressed) {
alert(`Opened in new tab: ${event.target.href}`);
// ...
// Save `event.target.href` URL using AJAX
}
});
});
<a href="https://www.stackoverflow.com">Same Tab</a>
<a target="_blank" href="https://www.google.com">New Tab</a>
答案 1 :(得分:-1)
第一件事。您将需要实现一个function
来处理页面打开:
function openedInNewTab(element) {
//Get the element's URL and store it
}
现在,您需要为点击事件添加EventListener,然后在其中调用openedInNewTab
。