изменить <a>цель на «_blank» в зависимости от href - PullRequest
3 голосов
/ 02 сентября 2010

Я пытаюсь отсортировать ссылки на своей странице и открыть некоторые из них в новом окне, в зависимости от их URL.Это код, который у меня есть.Кажется, это не работает.Вы понимаете почему?

function MakeMenuLinksOpenInNewWindow() {
    var links = document.getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) {
        if (links[i].href == "http://testtesttest.org/")
            links[i].target = "_blank";
    }
}
MakeMenuLinksOpenInNewWindow();

Ответы [ 4 ]

2 голосов
/ 02 сентября 2010

Убедитесь, что при вызове этой функции DOM загружен:

window.onload = MakeMenuLinksOpenInNewWindow;

или:

<body onload="MakeMenuLinksOpenInNewWindow();">
1 голос
/ 02 сентября 2010

Используйте jQuery.js.Это сделает вашу жизнь намного проще:

$("a[href='http://testtesttest.org/']").attr("target", "_blank");
0 голосов
/ 02 сентября 2010

Ваш JavaScript выглядит нормально.предполагая, что у вас есть проблемы с вашими ссылочными элементами, которых не существует, прежде чем пытаться изменить их, вам нужно отложить запуск метода, как упоминалось в других публикациях.Мой предпочтительный метод - переместить содержимое скрипта в конец страницы.

, поскольку похоже, что вы используете внешний файл js, ваша страница будет выглядеть так:По-прежнему возникают проблемы, вам придется опубликовать более полный пример.

правки: еще один момент.если у вас все еще есть проблемы, убедитесь, что URL, который вы ожидаете в свойстве href, не переписывается.например, IE прикрепит завершающий / к концу URL-адреса .com, если вы его не предоставите, что приведет к сбою сравнения.

0 голосов
/ 02 сентября 2010

Вы, вероятно, не должны устанавливать этот javascript.И вместо этого используйте HTML.

Но если вам нужно ...

function MakeMenuLinksOpenInNewWindow() {
    var links = document.getElementsByTagName("a");
    for (var i = 0, l = links.length; i < l; i++) {
        if (links[i].href === "http://www.example.com/")
            links[i].target = "_blank";
    }
}
window.onload = MakeMenuLinksOpenInNewWindow;
...