Как я могу проверить узел выделения с помощью объекта Range в JavaScript? - PullRequest
0 голосов
/ 17 ноября 2010

Я хочу отменить выбор и проверить узел выбора.Я пытаюсь следующий код.Но я думаю, я не могу указать на выбор, и поэтому код не работает.

<head>
<script type="text/javascript">
    function SelectAnchorNode () {
        if (window.getSelection) {        // Firefox, Opera, Google Chrome and Safari
            var selection = window.getSelection ();
            if (selection.anchorNode) {
                var rangeToSelect = document.createRange ();
                alert(selection.anchorNode.nodeName);

        } else {
            alert ("Your browser does not support this example!");
        }
    }
</script>
</head>
<body>
    <button onclick="SelectAnchorNode ();">Click to check!</button>
    <br /><br />
    <div>
        <div>This is the first line.</div>
        <p>This is the second line.</p>
    </div>
</body>

1 Ответ

0 голосов
/ 17 ноября 2010

В вашем коде есть некоторые ошибки, вы пропустили "}", чтобы закрыть функцию.

Также это не вернет true, так как выбор сделан на кнопке, а не на привязке (ссылке)

Попробуйте этот код (я понимаю, что это не то, что вам нужно, но он заставляет ваш пример работать)

<html>
<head>
<script type="text/javascript">
    function SelectAnchorNode () {
        if (window.getSelection) {        // Firefox, Opera, Google Chrome and Safari
            var selection = window.getSelection();
            if (selection.anchorNode) {
                var rangeToSelect = document.createRange();
                alert(selection.anchorNode.nodeName);
            } else {
                alert ("Your browser does not support this example!");
            }
        }
    }
</script>
</head>
<body>
<a onclick="SelectAnchorNode();">Click to check!</a>
<br /><br />
<div>
    <div>This is the first line.</div>
    <p>This is the second line.</p>
</div>

Как видите, я заменил кнопку ""с" a "и добавил пропущенный"} "

EDIT!
Вместо этого попробуйте эту строку (теперь я предположил, что вы хотите получить выбор, сделанный пользователем, и что вы нене хотите создавать выделение с помощью javascript?)

alert(selection.anchorNode.parentNode.nodeName);

В зависимости от того, где вы начинаете выделение, вы получите разные результаты, вам также необходимо сначала проверить, был ли выбран текстовый узел или нет (так какЯ мог бы сделать выбор прямо в теле).Но я надеюсь, что это приблизит вас к вашему решению.

С уважением
Тобиас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...