JS / CSS / XHTML: не копировать определенный текст во время событий копирования - PullRequest
2 голосов
/ 18 апреля 2011

Я ищу способ отключить копирование определенной области текста, когда вы используете Ctrl + C и т. Д. Должен ли я писать текст по-другому или нет.

http://gyazo.com/721a0a5b5af173beb1ad3305633beafb.png

Выше это для чего. Это подсветка синтаксиса, над которой я работал (на данный момент поддерживаются 3 языка). Когда пользователь выбирает ЛЮБОЙ текст, я не хочу, чтобы номера строк копировались.

Я не могу придумать способ отображения номеров строк без их фактического присутствия.

Ответы [ 4 ]

2 голосов
/ 18 апреля 2011

Пока номера строк и исходный код смешаны вместе, это будет сложно предотвратить программно, если не невозможно.

Идеальным способом было бы иметь исходный код в реальном контейнере.своего собственного.

Откройте инспектор документов и посмотрите, как Github это делает, например: https://github.com/jbrisbin/riak-exchange/blob/master/Makefile

, у них есть отдельный элемент <pre>, содержащий номера строк, и <table> ячейка, содержащая код.(Я предполагаю, что выбор - причина, по которой они используют таблицы здесь, но я точно не знаю.)

2 голосов
/ 18 апреля 2011

Дайте это попробовать ...

Демо: http://jsfiddle.net/wdm954/UD8Dq/7

Я разместил div так, чтобы код div был сверху, а цифры позади. Когда вы копируете и вставляете, вы должны просто получить код.

<code>.lines {
    position: absolute;
    width: 80%;
    color: #666;
}
.lines pre:nth-child(odd) {
    background-color: #EEE;
}
.code {
    position: absolute;
    z-index: 2;
    padding-left: 5%;
    width: 80%;
}


<div class="box">
    <div class="lines">
        <pre>1
2
3
4
    code
    code
    code
    code
1 голос
/ 09 августа 2014

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

HTML

<span data-line-number='1' class='line'></span>

CSS

.line:before {
    content: attr(data-line-number);
}
1 голос
/ 18 апреля 2011

Настройка user-select, -moz-user-select и -webkit-user-select до none может работать.Для IE вам нужно обработать onselectstart и вернуть false.

Это помешает людям выбирать текст, но я не знаю, что происходит, когда он пытается скопировать текст рядом с другим текстом.

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