2011-01-11 5 views
3

Wie blockieren Textauswahl zu sperren, ohne Eingabetextfeld und wählen Sie Elemente ich habe tatsächlich das Skript, das im Internet Explorer funktioniert, aber nicht in anderen Browsern, hier ist sie:wie Textauswahl ohne Eingabe Textfeld und wählen Sie Elemente

var omitformtags=["input", "textarea", "select"] 
omitformtags=omitformtags.join("|") 
function disableselect(e){ 
    if (omitformtags.indexOf(e.target.tagName.toLowerCase())==-1) 
    return false 
    } 
function reEnable(){ 
    return true 
    } 

if (typeof document.onselectstart!="undefined") 
    document.onselectstart=new Function ("return false") 
else{ 
    document.onmousedown=disableselect 
    document.onmouseup=reEnable 
} 
    document.onmousedown=click; 
    function click() 
{ 
    if ((event.button==2) || (event.button==3)) { alert("Yazı Kopyalayamazsınız!");} 

} 

ich brauche es die gleiche Weise in anderen Browsern zu arbeiten, muss es ein fertiges Skript, sein nur könnte nicht in Netz finden ..

+2

Also was meinst du mit deiner Frage – tekknolagi

+0

ich muss auf die gleiche Weise auf anderen Browsern blockieren ist es nicht offensichtlich? –

Antwort

4
<div onmousedown='return false;' onselectstart='return false;'></div> 

onmousedown deaktiviert die Auswahl für Firefox, Safari, Opera, Chrome und die meisten anderen Web-Browser, onselectstart für IE.

Die Deaktivierung der Textauswahl und der Kontextmenüs ist zwar ein sehr schlechter Stil und hindert die Pro-Benutzer nicht daran, Ihren Text auszuwählen. Das Deaktivieren von JavaScript in ihren Browsern ermöglicht die Auswahl erneut.

+0

Die Frage ist nicht über divs, sondern über Eingaben. Dies funktioniert für Divs - für mich - aber nicht für Eingaben. Gibt es eine Möglichkeit, dies für Eingaben zu tun? – rjurney

2

aktualisiert meine Antwort mehr klar zu sein:

Browser kann d Auswahl mit CSS-Stilen oder mit speziellen Element-Attribut. Auf diese Weise ist besser:

  • kein Skript
  • keine Angst zu unterstützen, dass Benutzer Skript und Kopien Inhalt deaktiviert sie
  • elegante Lösung

Opera und IE ignoriert einen solchen Stil braucht, aber es ist html Element Attribut nicht auswählbar, was die Auswahl verweigert. Versuchen Sie, die folgende Seite (I getestet in IE8, FF3.6, Safari5, opera11, Chrome8):

<html> 

<head> 

<style> 

.unselectable { 
    -moz-user-select: none; /* for FireFox */ 
    -webkit-user-select: none; /* for Chrome and Safari */ 
    -khtml-user-select: none; /* probably old webkit browsers, but new support it too */ 
    user-select: none; /* for future CSS3 compliant browsers */ 
} 

</style> 

</head> 

<body> 

<!-- add unselectable class to deny selecting in FF, Chrome, Safari and CSS3 compliant browsers --> 
<!-- add unselectable attribute to deny selecting in Opera and IE --> 
<div class="unselectable" unselectable="on">test</div> 

</body> 

</html> 

Weitere Informationen über sie this page besuchen. Jetzt können Sie die beste Option für die Verwendung von/maintain auswählen. Noch einmal - diese Lösung benötigt kein Javascript und sollte imho sicherer sein (wenn Sie html \ css-Seiten bearbeiten können und keine dynamische benötigen. Andernfalls können Sie versuchen, CSS-Klasse \ Element-Attribut über Javascript hinzuzufügen ..)

+0

was für ein Schmerz. Es sollte wirklich eine Möglichkeit geben zu sagen "Zulassen, dass Eingabe- und Textfeld-Feldinhalte ausgewählt werden, andernfalls erlauben Sie keine Auswahl an anderen Elementen". Es ist mir egal, ob fortgeschrittene Benutzer noch Text bekommen können. Was mir wichtig ist, ist, dass ich in den Drag-and-Drop-UIs vor allem nicht möchte, dass Nicht-Eingabe-Elemente ausgewählt werden. scheint vernünftig, aber irgendwie ist es sehr schwer zu erreichen. – jlarson

+0

gut, aber als JavaScript-Lösung können Sie die CSS mit dem Chrom-Inspektor ändern einfach zu prüfen, das Element überprüfen Sie die Klasse "unselektierbar" und entfernen Sie es ... als Javascript-Lösung funktioniert dies nicht für Entwickler und ernsthafte Fortschritte Benutzer. .: S lol ... – ncubica

+0

Die Frage ist nicht über divs, sondern über Eingaben. Dies funktioniert für divs - für mich - aber nicht für Eingaben. – rjurney