Вопрос

Я пытаюсь разобраться по ссылкам на моей странице и заставить некоторых из них открыты в новое окно, в зависимости от их 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();
Это было полезно?

Решение

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

$("a[href='http://testtesttest.org/']").attr("target", "_blank");

Другие советы

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

window.onload = MakeMenuLinksOpenInNewWindow;

или:

<body onload="MakeMenuLinksOpenInNewWindow();">

Вы, вероятно, не должны устанавливать этот 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;

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

Так как он выглядит так, как будто вы используете внешний файл JS, ваша страница хотела бы

    ... 
    <a href="http://testtesttest.org/" >whatever</a>
    ... 
    <script src="myscriptfile.js"></script>
</body>
</html>

Если у вас все еще проблемы, вам придется опубликовать более полный пример.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top