0

这是我的页面(主要)中的链接:

<a href="log_details.jsf#MyAnchor" target="log">View details</a>

如果还没有打开任何窗口,则会出现一个新窗口(我们称之为 LOG)并在顶部指向锚点。

如果 LOG 保持打开状态并且用户决定返回 MAIN 以单击类似这样的另一个链接

<a href="log_details.jsf#MyAnchor2" target="log">View details</a>

LOG 中的位置已移至 MyAnchor2,但 LOG 并未置顶。

每当用户单击类似于以下内容的链接时,如何使 LOG 出现在顶部:

<a href="log_details.jsf#MyAnchorXXX" target="log">View details</a>
4

1 回答 1

1

如果窗口已经打开并且log您的 Javascript 中的变量知道该窗口,您应该能够调用log.focus()该窗口以将其置于最前面。

编辑:

当您使用该target属性时,它会给窗口一个“名称”。不过,此名称与 Javascript 变量是分开的。所以在 where 的实例中target="log",没有对应的变量被命名为函数log引用。.focus()


function logLinks(){
    //Get every A tag
    var links = document.getElementsByTagName('a');
    //Iterate through the elements and...
    for(i=0; i<links.length; i++){
        //If the element has a class of 'log'
        if(links[i].className=='log'){
            //Clone it
            var dup = links[i].cloneNode(true);
            //Strip move the href elsewhere
            dup.id=dup.href; 
            dup.href='';
            //Add a click listener
            dup.addEventListener('click', function(){openLog(this.id);}, false);
            //Replace the existing element on the page
            links[i].parentNode.replaceChild(dup, links[i]);
        }
    }
}

function openLog(link){
    //Open a window and give it focus
    var wh = window.open(link, 'logWindow');
    wh.focus();
}

//Run this function on page load
document.addEventListener("DOMContentLoaded", logLinks);

上面的代码将遍历页面并将任何a设置为具有log该类的标签替换为一个版本,该版本打开一个与href该链接相关的窗口,然后focus在结果窗口上执行。

于 2012-09-26T14:00:04.567 回答